NavMeshAgent

NavMeshAgent是Unity3D中的导航网格代理组件,用于控制游戏对象在NavMesh上移动。本文详细介绍了NavMeshAgent的各个属性和公共函数,包括代理的加速度、旋转速度、避障优先级等,并提供了如何计算路径、激活OffMeshLink等功能。
摘要由CSDN通过智能技术生成

原文http://docs.unity3d.com/ScriptReference/NavMeshAgent.html

 

继承自Behaviour

 

Variables

acceleration 

类型:float

代理的最大加速度。代理并不是精确的按照被navigation system计算出来的直线片段行走,而是使用路点作为中间目的地。这个值是代理在向下一个路点移动时的最大加速的值。(跟现实世界一样,代理按照这个加速度增加自己的速度,直到最大速度)。

 

angularSpeed

类型:float

代理的最高旋转速度。这是当代理绕着路点定义的"corner"旋转时的最大速率。真正旋转时的弧度(circle)也受到代理的速度和最大加速度影响。

 

areaMask

类型:int

指定哪一个NavMesh区域(areas)是可用的。改变areaMask将会使路径陈旧。

这是一个位域。

(这个值可以在游戏中被修改,立即生效)

 

autoBraking

类型:bool

代理是否自动停止从而避免越过目的地?

如果代理需要在目的点附近着陆(land close),那么他必须及时停止避免越过或者无限的围着目标区域按轨道运行。如果这个属性被设置为true,当代理到达目的地附近时就会自动停止。

 

autoRepath

类型:bool

如果当前的路径变成无效时,代理是否重新获得一个路径?

当代理到达一个路径片段的结尾和路径陈旧时,一个新的路径需要被计算。

(这个值还不知道到底有什么效果,在游戏中,当areaMask改变,路径陈旧时,路径会被重新计算,立即发生)

 

autoTraverseOffMeshLink

类型:bool

Off-mesh links被用来链接不连续的NavMesh区域。通常情况下,一个角色应该可以自动的通过或穿过一个环节(link),而这时这个属性被设置为true。然而他也可以被设置为false当需要一些特定的控制的时候。

 

avoidancePriority

类型:int

躲避优先级

当代理是一个障碍物时,级别低的代理被忽视。有效的范围是从099:最终要=0,最不重要=99,默认=50

(注意:以下都是基于没有刚体的情况下
1、如果障碍物是不会移动的,那么请在bake时候连同地形一起bake,这样就会生成较好的navmesh
2、如果障碍物需要移动,那么请在障碍物上添加agent,并设置其大小,然后设置avoidancePriority,低优先级的将被高优先级的agent强行推开)

 

baseOffset

类型:float

相对于所拥有的游戏对象的垂直位移。

(正值则代理在游戏对象的下方,负值在上方)

 

currentOffMeshLinkData

类型:OffMeshLinkData

当前的OffMeshLinkData.(结构体)

如果代理没有在一个OffMeshLink上,OffMeshLinkData被标记为无效。

 

desiredVelocity

类型:Vector3

期望速度 只读。

 

Destination

类型:Vector3

设置或者获得代理的目的点,世界坐标系。

获得:

返回设置给代理的目的点。

如果一个目的点被设置了并且寻路过程还没结束,将会返回一个有效的,离预先设置的位置(position)最近的navmesh位置。

如果代理没有路径或被请求的路径,返回代理自己的位置。

如果代理没有映射到navmesh,返回infinity

设置:

请求代理移动到离目的点最近的有效的位置。

 路径结果可能是无效的直到几帧之后。使用pathPending获取结果。

 如果找不到一个有效的最近的位置,将不会请求路径。使用SetDestination并且检查返回值,如果你需要明确的掌握这些情况。

using UnityEngine;

[RequireComponent (typeof (NavMeshAgent))]
public class FollowTarget : MonoBehaviour {
	public Transform target;
	Vector3 destination;
	NavMeshAgent agent;

	void Start () {
		// Cache agent component and destination
		agent = GetComponent<NavMeshAgent>();
		desti
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值