unity-动态障碍物和网格链接

目录

动态障碍物

问题

解决方法

障碍物组件(Nav Mesh Obstacle)

参数

形状

中心和大小

切割

​编辑移动阈值和静止时间

网格链接

掉落高度

跳跃距离

特定链接

参数表

​编辑


动态障碍物

有时候我们希望在游戏中,有些障碍物是可以移动的,比如下面中间的墙。

当移动完后,角色就可以到达墙的另一边了。此时,墙就是一个动态障碍物

问题

如果墙是静态障碍物,就会产生一个问题

如上图,即使我移开了墙,中间的网格还是灰色区域,也就是并没有渲染导航网格,即角色仍然不能穿越这面墙的区域。

解决方法

将墙不再设置为静态导航物体

重新烘焙

烘焙完成后,会发现中间这面墙不会再影响导航网格的渲染,那么角色进来经过该区域,也就是角色可以穿墙。

障碍物组件(Nav Mesh Obstacle)

此时,需要给这面墙添加一个组件

此时,角色就不能穿墙了。

参数

形状

障碍物本身有碰撞器,而碰撞器的形状就可以在这里设置为盒子或胶囊

中心和大小

默认即可,如果选默认,碰撞器边框大小刚好和物体一样大

切割

默认是不切割的,也就是最省性能的

当勾选切割时,则这面墙会动态地重新产生一个烘焙,烘焙出新的网格

当我们运行游戏,移动这面墙时,我们会发现,它会重新计算墙的导航网格,重新进行烘焙,这就是动态烘焙。


移动阈值和静止时间

移动阈值就是移动多长距离才进行重新烘焙,静止时间就是要静止多长时间才进行重新烘焙,只有移动阈值和静止时间都满足条件后,才会进行重新烘焙。并且需要勾选仅在静止时切割,移动阈值和静止时间才会生效。

如果不勾选仅在静止时切割,无论如何移动,都会立即切割,重新烘焙,这对于性能的消耗非常高。

网格链接

掉落高度

掉落高度就是角色可以掉落的最大高度

比如这里设置为10。

此时还需要对支持跳跃的台子设置生成网格链接

最后,重新烘焙

这里就会生成一些圆圈链接标志,即可以通过链接,从一个圆圈位置到达另一个圆圈位置。

跳跃距离

也就是角色的跳跃距离,比如现在想要角色在两个台子间进行跳跃。

首先这两个台子都要设置能生成网格链接(且只能设置两个,设置多个物体生成网格链接可能会无法生成)

然后设置跳跃距离,并进行烘焙即可。

注意,上图会存在一个问题,在两个平台的导航网格区域(蓝色区域)很窄,会导致角色无法到达圆圈区域,从而导致无法进行跳跃,所以需要设置一些代理宽度,让导航网格区域变宽

这样,导航网格区域足够宽,就能正常跳跃了

特定链接

有时候,我们希望人物能在特定的两个位置进行移动,类似于传送的效果。

先创建两个立方体作为传送的位置

现在的需求就是,角色到达一个立方体的位置时,就能被传送到另一个立方体的位置

在其中一个立方体中添加off mesh link组件

然后设置起始点和结束点(分别为两个立放体的位置)

直接写坐标会比较麻烦,最好就直接在场景中拖动起始点和结束点,也就是黄色小方块

到达指定位置后,直接点击另一个,就能实现传送了。或者直接点击墙后面的点,角色也会自动到达台子上的点,并进行传送

参数表

Auto Update Position,直接在场景窗口中更新位置不会看出勾选与不勾选的区别,可能新版的意思是在脚本中移动了端点

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值