返回介绍

NavMeshAgent.nextPosition 下个位置

发布于 2019-12-18 15:38:05 字数 3996 浏览 1608 评论 0 收藏 0

JavaScript => public var nextPosition: Vector3;
C# => public Vector3 nextPosition;

Description 描述

Gets or sets the simulation position of the navmesh agent.

获取或者设置导航网格的模拟仿真位置。

The position vector is in world space coordinates and units.

在世界空间坐标的位置向量和单位。

The nextPosition is coupled to Transform.position. In the default case the navmesh agent's Transform position will match the internal simulation position at the time the script Update function is called. This coupling can be turned on and off by setting updatePosition.

该nextPosition与Transform.position是耦合的。默认情况下导航网格代理的变换位置将会与内部仿真位置相匹配与此同时更新脚本被调用。该耦合可以通过设置updatePosition来开启或者关闭。

When updatePosition is true, the Transform.position reflects the simulated position, when false the position of the transform and the navmesh agent is not synchronized, and you'll see a difference between the two in general. When updatePosition is turned back on, the Transform.position will be immediately move to match nextPosition.

当updatePosition 是true,Transform.position反映了模拟位置,当为false,变换的位置和导航网歌代理不是同步的,并且你会看到一个两者之间的区别。当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.

通过设置nextPosition 你可以直接控制内部代理的位置。代理将会朝着该位置移动,但是通过导航网格的连通性和边界驱动。同样的如果该位置是不断更新和评估,它是有用的。请参考 Warp传送导航网格代理。

JavaScript:

#pragma strict
function Start() {
	// Update the transform position explicitly in the OnAnimatorMove callback
	GetComponent.<NavMeshAgent>().updatePosition = false;
}
function OnAnimatorMove() {
	transform.position = GetComponent.<NavMeshAgent>().nextPosition;
}

Additionally it can be useful to control the agent position directly - especially if the GO transform is controlled by something else - e.g. animator, physics, scripted or input.

此外它可以用于直接控制代理位置-尤其是通过某些其他东西控制到达transform-即动画,物理系统,脚本或者输入控制。

JavaScript:

#pragma strict
public var agentIsControlledByOther: boolean;
function Update() {
	var agent: var = GetComponent.<NavMeshAgent>();
	agent.updatePosition = !agentIsControlledByOther;
	if (agentIsControlledByOther) {
		GetComponent.<NavMeshAgent>().nextPosition = transform.position;
	}
}

C#:

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;
	}
}

Additionally it can be useful to control the agent position directly - especially if the GO transform is controlled by something else - e.g. animator, physics, scripted or input.

此外它可以用于直接控制代理位置-尤其是通过某些其他东西控制到达transform-即动画,物理系统,脚本或者输入控制。

C#:

using UnityEngine;
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;
		}
	}
}

navmeshagent

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文