Version: 2022.3
言語: 日本語
public Vector3 nextPosition ;

説明

NavMesh Agent のシミュレーション位置を取得や設定します。

位置ベクトルはワールド空間の座標と単位です。

NextPosition は Transform.position と結合されます。デフォルトでは NavMesh Agent の Transform 位置はスクリプトでの Update 関数が呼び出されるときに内部シミュレーションの位置と一致させます。この結合は updatePosition の設定でオンとオフを切り替えることができます。

updatePosition が True のとき、 Transform.position はシミュレーションされた位置が反映され、 False のとき、 Transform と NavMesh Agent の位置は同期されません。 updatePosition がオンにもどるとき、Transform.position は nextPosition に合わせてすぐに移動します。

By setting nextPosition you can directly control where the internal agent position should be. The agent will be moved towards the position, but is constrained by the navmesh connectivity and boundaries. As such it will be useful only if the positions are continuously updated and assessed. See Also: Warp for teleporting a navmesh agent.

using UnityEngine;
using UnityEngine.AI;
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 UnityEngine.AI;
using System.Collections;

public class ExampleClass : MonoBehaviour { public bool agentIsControlledByOther; void Update() { var agent = GetComponent<NavMeshAgent>(); agent.updatePosition = !agentIsControlledByOther; if (agentIsControlledByOther) { GetComponent<NavMeshAgent>().nextPosition = transform.position; } } }

関連項目: 相対位置でエージェントを移動する Move