Unity3D 3.5寻路NavMesh和NavMeshAgent。。。更新版。。。。

来源:互联网 发布:winzip mac 6 注册机 编辑:程序博客网 时间:2024/05/22 12:55

 

 

以前在制作寻路的时候,总是借助A Star插件。但Unity3D现在已经可以使用自己自带的寻路Component了,而且使用来气非常的简单明了!

 

    和U3D以前大多数的优化组件类似,Nav也需要在设置好寻路网格和寻路对象之后Bake一下。关于U3D内置的寻路组件主要分为两大个 类,NavMesh和NavMeshAgent;前者用于设置寻路的网络,后者设置寻路的Object。在NavMesh对外公开的方法有:
Raycast  跟踪上NavMesh的两个点之间的射线。
CalculatePath  计算两点之间的路径和存储路径。
DistanceToEdge  找到最近从一个点的NavMesh NavMesh边缘。
SamplePosition  样品到指定点最接近的NavMesh。
SetLayerCost  设置成本超过一层上的所有代理类型的几何遍历。
GetLayerCost  取得成本超过一层上的所有代理类型的几何遍历。
GetNavMeshLayerFromName  返回一个已命名的层层指数。

 

此外它还继承了一些变量

name  对象的名称。
hideFlags  如果对象是隐藏的,由用户在现场或修改保存?
继承的函数
GetInstanceID  返回该对象的实例ID。
ToString  返回游戏对象的名称。
继承类的功能
operator bool  对象是否存在?
Instantiate 克隆原始的对象,并返回克隆 。
Destroy  删除一个游戏物体,组件或资产。
DestroyImmediate 立即销毁对象 obj 。强烈建议,而不是使用毁灭。
FindObjectsOfType 返回的所有活动加载的类型对象的列表类型 。
FindObjectOfType 返回的第一个活动类型加载的对象类型。
运算符==  比较如果两个对象指向同一个
运算符!  比较,如果两个对象是指不同的对象
DontDestroyOnLoad 使得对象的目标不会被破坏时自动装载一个新的场景。

 

在NavMesh对外公开的方法有:
变量
destination  导航朝目的地。
stoppingDistance  在这个距离内停止从目标位置。
velocity  navmesh代理组件的当前速度。
nextPosition  路径上的下一个位置。
remainingDistance  当前路径上的剩余距离。
baseOffset  拥有游戏物体的相对垂直位移。
isOnOffMeshLink  代理目前定位上OffMeshLink。
autoTraverseOffMeshLink  自动运动到和关闭OffMeshLinks。
autoRepath  试图获取一个新的路径,如果现有的路径变为无效
hasPath  代理目前有一个路径。
pathPending  正在计算路径,但还没有准备好
isPathStale  当前路径陈旧。
pathStatus  查询当前路径的状态。
walkableMask 指定巫NavMesh层是差强人意(位域)。更改walkableMask将陈旧的路径(见isPathStale)
speed  最大移动速度。
angularSpeed  最高转速(deg / s的)。
acceleration  最大加速度
updatePosition  如果代理更新变换位置。
updateRotation  如果代理更新变换方向。
radius  代理半径。
height  代理的高度。
obstacleAvoidanceType  避免质量水平

功能
SetDestination 设置或更新的目标。这会触发一个新的路径计算。
ActivateCurrentOffMeshLink  启用或禁用当前​​链接。
GetCurrentOffMeshLinkData  提取当前的OffMeshLink状态。
GetCurrentOffMeshLinkGameObject  参考当前OffMeshLink的游戏对象。
CompleteOffMeshLink  终止电流OffMeshLink。
Move  当前位置应用相对运动。
Stop  停止代理的运动沿着目前的道路。
Resume  恢复运动沿着目前的道路。
ResetPath 清除当前路径。请注意,代理将开始寻找一条新的道路,直到SetDestination被称为。
SetPath  指定代理的路径。
DistanceToEdge  找到最近的NavMesh边缘。
Raycast 对一个目标位置的NavMesh的跟踪运动。不移动代理。
SamplePathPosition  采样沿着目前的道路位置。
SetLayerCost  设置为以上的层类型的几何遍历成本。
GetLayerCost  获取超过该层类型的几何遍历成本。

继承的成员
继承的变量
enabled  启用Behaviours更新,禁用Behaviours都没有。
transform 变换连接到这个游戏物体(null,如果是没有连接)。
rigidbody 刚性主体连接到这个游戏物体(null,如果是没有连接)。
camera 该相机连接到这个游戏物体(NULL,如果有没有附加) 。
light 这个游戏物体光连接(如果是没有连接的空) 。
animation 动画的连接到这个游戏物体(NULL,如果有没有附加) 。
constantForce ConstantForce连接到这个游戏物体(null,如果是没有连接)。
renderer 渲染器 连接到这个游戏物体(空;如果没有附加)。
audio AudioSource附加游戏物体(null,如果是没有连接)。
guiText GUIText连接到这个游戏物体(null,如果是没有连接)。
networkView NetworkView连接这个游戏物体 (只读)。(空;如果没有连接)
guiTexture GUITexture连接这个游戏物体 (只读)。(空;如果没有连接)
collider 对撞机的连接到这个游戏物体(空;如果没有附加)。
hingeJoint HingeJoint连接到这个游戏物体(null,如果是没有连接)。
particleEmitter ParticleEmitter连接到这个游戏物体(null,如果是没有连接)。
particleSystem ParticleSystem连接到这个游戏物体(null,如果是没有连接)。
GameObject  此组件连接到游戏的目标。始终是一个组件连接到一个游戏对象。
tag  这个游戏对象的标记。
name  对象的名称。
hideFlags  如果对象是隐藏的,由用户在现场或修改保存?

继承的函数
GetComponent 如果比赛的对象之一附着,空,如果它不返回类型的组件类型。
GetComponentInChildren 返回的类型的组件类型的游戏物体或任何其使用深度优先搜索的儿童 。
GetComponentsInChildren 返回类型的所有组件类型在游戏物体或任何其子女。
GetComponents 返回类型的所有组件类型的游戏物体。
CompareTag 这是游戏对象标签的标签吗 ?
SendMessageUpwards 调用命名方法methodName中每MonoBehaviour在这场比赛中对象的行为的每一个祖先
SendMessage函数 调用命名的方法methodName中每MonoBehaviour在这个游戏对象。
BroadcastMessage 调用命名的方法methodName中每MonoBehaviour在这场比赛中的对象或任何其子女。
GetInstanceID  返回该对象的实例ID。
ToString  返回游戏对象的名称。
继承类的功能
运算符BOOL  对象是否存在?
Instantiate 克隆原始的对象,并返回克隆 。
Destroy  删除一个游戏物体,组件或资产。
DestroyImmediate 立即销毁对象 obj 。强烈建议,而不是使用毁灭。
FindObjectsOfType 返回的所有活动加载的类型对象的列表类型 。
FindObjectOfType 返回的第一个活动类型加载的对象类型。
运算符==  比较如果两个对象指向同一个
运算符!  比较,如果两个对象是指指向同一个

视频教程:1、Navmesh Generation and Agent Follow    

         2、Unity3D NavMesh Tutorial

视频地址:http://v.youku.com/v_show/id_XMzY1NTk3OTEy.html

http://v.youku.com/v_show/id_XMzY1NTc4NTc2.html

 














3.5正式版终于出炉了 相比新的粒子系统 我更期待的是他自带的navmesh寻路
以下是楼主搜来的一篇关于Waypoint 与 NavMesh 比较的博文 有兴趣的童鞋多研究下哦 

































以上截图转载自: http://blog.csdn.net/budtang/article/details/5959606





原创粉丝点击