私はゲームオブジェクトを3つのポイントの間で前後に移動しようとしています。これはC#で統一されています。私はユニティインスペクタで3つのゲームオブジェクトを割り当てました。エナミーゲームオブジェクトが前後のポイント間を移動します。パトロール。問題は、私は範囲外のエラーのインデックスを取得することです。それはなぜですか、どうすれば修正できますか? 文法的な出来事を申し訳ありません。インデックスから範囲外のエラーが発生するのはなぜですか?
public class Enamy2 : MonoBehaviour {
public Transform[] pointPosition;
public float enamySpeed;
private int currentPoint;
private bool backTracking = false;
// Use this for initialization
void Start() {
transform.position = pointPosition [0].position;
currentPoint = 0;
}
// Update is called once per frame
void Update() {
if (transform.position == pointPosition[currentPoint].position) {
if (backTracking)
currentPoint--;
else
currentPoint++;
}
if(currentPoint >= pointPosition.Length) {
backTracking = true;
}
transform.position = Vector3.MoveTowards (transform.position, pointPosition [currentPoint].position, Time.deltaTime * enamySpeed);
}
}
私はどのようにスクリプトを修正する必要がありますか?私は統一とC#を1週間だけ行ったので、私にとっては難しいです... –
if文の中で 'currentPoint'をリセットする必要があります。例: 'backTracking = true; currentPoint = 0; 'または、backTrackingを別の方法で処理します。 –
実際には、 'currentPoint'が決して負でないことを確かめなければなりません。 'currentPoint'が0になった場合、backTrackingをオフにするif文を追加します。 –