您的位置:首页 > 移动开发 > Unity3D

Unity 3D - 导航系统 ( NavMesh )

2017-04-25 21:27 183 查看

Unity 3D - 导航系统 ( NavMesh ) :

效果图 :



NavMeshAgent 属性分析 :



Agent Size ( 代理尺寸 ) :

名称作用
Radius 半径代理半径 ( 仅用于寻路目的,可以跟实际对象的半径大小不一样,一般比实际对象的半径大 )
Height 高度代理高度 ( 和可通过高度有关 , 通常用于调试图形 )
Base offset 基本偏移碰撞几何体相对于实际几何体垂直的偏移

Steering ( 导航掌控数值 ) :

名称作用
Speed 速度移动到目的地的最大移动速度
Angular Speed 角速度最高转速(度/秒)
Acceleration 加速度最大加速度
Stopping distance 制动距离制动距离 ( 到目的地的距离小于这个值 , 代理减速 )
Auto Braking 自动断开是否自动断开寻路

Obstacle Avoidance ( 避障 ) :

名称作用

Path Finding ( 寻路 ) :

名称作用
Auto Traverse OffMesh Link自动遍历OffMesh链接自动移动并关闭OffMeshLinks
Auto Repath 自动重新寻路如果现有的部分已失效,获得新的路径

Navigation ( 导航 ) :



Object ( 物体参数面板 ) :

名称作用
Navigation Static勾选后表示该对象参与导航网格的烘培
OffMeshLink Generation[/b]勾选后可跳跃(Jump)导航网格和下落(Drop)


Bake ( 烘培参数面板 ) :

名称作用
Radius具有代表性的物体半径,半径越小生成的网格面积越大
Height具有代表性的物体的高度
Max Slope斜坡的坡度
Ste Height台阶高度
Drop Height允许最大的下落距离
Jump Distance允许最大的跳跃距离
Min Region Area网格面积小于该值则不生成导航网格
Width Inaccuracy允许最大宽度的误差
Height Inaccuracy允许最大高度的误差
Height Mesh勾选后会保存高度信息,同时会消耗一些性能和存储空间

注意 :

需要引入命名空间 using UnityEngine.AI;

修改Navigation 中的 Object 的对应属性 , 如图 .

Navigation Area 是 定义类型 (默认三种 : 可通过 , 不可通过 , 跳跃) .



C# Demo :

using UnityEngine;
using UnityEngine.AI;

public class MoveToClickPoint : MonoBehaviour {
NavMeshAgent agent;

void Start() {
agent = GetComponent<NavMeshAgent>();

}

void Update() {
if (Input.GetMouseButtonDown(0)) {
RaycastHit hit;

if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100)) {
agent.destination = hit.point;
}
}

}
}


变量 :

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 获取超过该层类型的几何遍历成本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: