Unity 3D - 导航系统 ( NavMesh )

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

效果图 :

这里写图片描述

这里写图片描述

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 自动重新寻路如果现有的部分已失效,获得新的路径

这里写图片描述
Object ( 物体参数面板 ) :

名称作用
Navigation Static勾选后表示该对象参与导航网格的烘培
OffMeshLink Generation勾选后可跳跃(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 获取超过该层类型的几何遍历成本。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值