Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

NavMeshAgent.nextPosition

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える
public var nextPosition: Vector3;
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 に合わせてすぐに移動します。

内部のエージェントがいるべき位置を 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