
将障碍物添加NavMeshObstacle组件,可无需添加Collider组件
Shape:生成的Obstacle形状
center:控制中心 类似Collider
size:大小 类似Collider
Carve:是否雕刻 只有当勾选此选项后 Player才会重新计算路线,越过此障碍物寻找最近路线,否则,会将Player卡在障碍物位置
MoveThreshold: 移动范围的大小。移动的Obstacle,当移动范围<此数值时,是不会重新计算生成ObstacleMesh的,可根据需求修改此数值
TimeToStationar:时间数值。当移动Obstacle时,延迟多长时间后再生成ObstacleMesh,进行路径计算。
CarveOnlyStatio:当勾选此选项表示只有在障碍物静止下来之后才进行ObstacleMesh的计算

Area:设置可通过的层
对应面板中的
Area Mask:游戏对象可通过的网格区域
代码动态设置层级

设置可通过多个层级

删除某个通过层级(进行取反操作~)



NavMeshSettin:相对于游戏对象与场景中的碰撞体之间
Speed:运动过程中的最大速度
AngularSpeed:角速度 游戏对象转身速度
Acceleretion:加速度 速度从0到达最大速度所需时间 描述速度变化快慢的变化
StopDistance:游戏对象到达多少距离之后会进行减速
AutoBraking:自动刹车。 取消勾选游戏对象会在目标点位置进行来回移动
Quality: 低优先级的对高优先级的对象进行让路

AutoTraverse off mesh link:勾选后在off mesh 处自动进行移动

Auto Repath:上图中“门”挡住路线,程序运行中移开此“门”,勾选此选项后,游戏对象会自动继续进行寻路,否则仍被当在门外
agent.updatePosition (bool值)
agent属性是否驱动游戏对象进行移动 当为True,更新游戏角色的位置信息,agent属性来驱动角色对象 到达目的地
当为False时,游戏对象不发生位置变化,但在其内部是可以进行位移变化的
如下 仍可以通过agent.nextPosition 获取物体下一位置点信息,虽然人物角色不会通过agent属性进行位移变化
agent.nextPosition:模拟下一帧所到达的地点

通过agent.nextPosition-transform.position获取角色的位移变化
通过点乘获取位移信息(X轴 Y轴)

对位置信息进行平滑处理

对Time.deltaTime进行安全检查 不为0时进行操作

距离/时间=速度

是否可以进行移动==速度的模>0.5f且剩余距离>半径

设置动画状态机中设置的切换动画状态的Bool值,来进行状态的切换(Idle/move) 并对状态混合树中设定的变量进行赋值

根骨骼信息发生变化时调用(回调函数 OnAnimatorMove() ),通过动画的位移信息来驱动角色的位移变化
![]()
Agent.remainingDistance:游戏对象与目标点之间的距离 到达目标地时为0

agent. stop resume :停止 继续
![]()
agent.Wrap:游戏对象瞬间移动到目标点
本文介绍了Unity中的NavMeshObstacle组件,如何在无需Collider的情况下创建障碍物。主要内容包括:设置障碍物形状、大小、雕刻选项、移动阈值和静态雕刻等参数。此外,还讲解了Area Mask的配置,动态改变游戏对象的层级,并讨论了导航质量、速度、加速度等关键属性。特别强调了agent.updatePosition和nextPosition的使用,以及在动画和寻路中的应用。

9133

被折叠的 条评论
为什么被折叠?



