NavMesh Agent のシミュレーション位置を取得や設定します。
位置ベクトルはワールド空間の座標と単位です。
NextPosition は Transform.position と結合されます。デフォルトでは NavMesh Agent の Transform 位置はスクリプトでの Update 関数が呼び出されるときに内部シミュレーションの位置と一致させます。この結合は updatePosition の設定でオンとオフを切り替えることができます。
updatePosition が True のとき、 Transform.position はシミュレーションされた位置が反映され、 False のとき、 Transform と NavMesh Agent の位置は同期されません。 updatePosition がオンにもどるとき、Transform.position は nextPosition に合わせてすぐに移動します。
内部のエージェントがいるべき位置を NextPosition を設定することで直接制御することができます。エージェントはその位置に向かって移動しますが NavMesh の接続性と境界によって制限されます。このように位置が継続的に更新されて評価される場合のみ役に立ちます。
関連項目: NavMesh Agent のテレポーション移動のための Warp
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { void Start () { // Update the transform position explicitly in the OnAnimatorMove callback GetComponent<NavMeshAgent>().updatePosition = false; } void OnAnimatorMove () { transform.position = GetComponent<NavMeshAgent>().nextPosition; } }
さらにエージェントの位置を直接制御することができます。特に GO Transform は他の何かで制御されます。例えば、アニメーター、Physics、スクリプトや入力です。
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public bool agentIsControlledByOther; void Update () { NavMeshAgent agent = GetComponent<NavMeshAgent> (); agent.updatePosition = !agentIsControlledByOther; if (agentIsControlledByOther) { GetComponent<NavMeshAgent>().nextPosition = transform.position; } } }
関連項目: 相対位置でエージェントを移動する Move