- 締切済み
unity スクリプト 意味
// Patrol.cs using UnityEngine; using System.Collections; public class Patrol : MonoBehaviour { public Transform[] points; private int destPoint = 0; private NavMeshAgent agent; void Start () { agent = GetComponent<NavMeshAgent>(); // Disabling auto-braking allows for continuous movement // between points (ie, the agent doesn't slow down as it // approaches a destination point). agent.autoBraking = false; GotoNextPoint(); } void GotoNextPoint() { // Returns if no points have been set up if (points.Length == 0) return; // Set the agent to go to the currently selected destination. agent.destination = points[destPoint].position; // Choose the next point in the array as the destination, // cycling to the start if necessary. destPoint = (destPoint + 1) % points.Length; } void Update () { // Choose the next destination point when the agent gets // close to the current one. if (agent.remainingDistance < 0.5f) GotoNextPoint(); } } ~~~~~~~~~~~~~~~~~~~~~~~~~~ // Choose the next point in the array as the destination, // cycling to the start if necessary. destPoint = (destPoint + 1) % points.Length; の意味がよく分かりません。説明して貰えませんか? このチュートリアル(http://docs.unity3d.com/jp/current/Manual/nav-AgentPatrol.html)です。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- anmochi
- ベストアンサー率65% (1332/2045)
チュートリアルみてないけどおそらくdestPointはpointsというTransFormの配列のインデックスとして使うのだろう。 で、pointsを順番に使うためにインクリメントしている(destPoint + 1)のだが、ずっとインクリメントし続けるとpointsの範囲を超えてしまうので超えたらまた0から(% points.Length)カウントアップさせているのだろう。 ~~~~ double[] arraydouble = new double[10]; int index = 0; while(true) { index = (index + 1) % arraydouble.Length; AnyCalc(arraydouble[index]); } ~~~~ 構造としてはこのようなものと同等になるだろう。配列の大きさで次のインデックスを計算している理由は任意の大きさの配列に対応するためだと思われる。