私はここhttp://arongranberg.com/astar/docs/から取得したA *パスファインディングアルゴリズムを使用しており、ループシステム内のランダムポイントから別のランダムポイントにオブジェクトを移動させようとしています.これはオブジェクトの移動に使用されるコード: ポイントを配列に入れようとしましたが、うまくいきませんでした。著者は、AI が目的地に到達した後に追加の動作が必要な場合は、OnTargetReached() メソッドにコードを記述する必要があると述べていますが、正確な方法はわかりません。アイデアがあれば、どんなに小さなことでもとても役に立ちます。
public virtual void SearchPath () {
//if (target == null)
//{ Debug.LogError ("Target is null, aborting all search"); canSearch = false; return; }
lastRepath = Time.time;
//This is where we should search to
//Vector3 [] position = new Vector3[2];
//position[0] = new Vector3(Random.Range(-2,-7), 0, Random.Range(21,26));
//position[1] = new Vector3(Random.Range(19,23), 0, Random.Range (28,31));
//position[2] =
canSearchAgain = false;
//Alternative way of requesting the path
//Path p = PathPool<Path>.GetPath().Setup(GetFeetPosition(),targetPoint,null);
//seeker.StartPath (p);
//We should search from the current position
seeker.StartPath (GetFeetPosition(),targetPosition);
}
public virtual void OnTargetReached () {
//End of path has been reached
//If you want custom logic for when the AI has reached it's destination
//add it here
//You can also create a new script which inherits from this one
//and override the function in that script
//Vector3 new_targetPosition = new Vector3(Random.Range(19,23), 0, Random.Range (28,31));
//Vector3 new_targetPosition = new Vector3(19,0,28);
seeker.StartPath (GetFeetPosition(),new_targetPosition);
}