unity学习笔记

2023-12-13 23:55:20

一、动态障碍物

在Unity中,动态障碍物通常是指能够在运行时发生变化或移动的障碍物。这些物体通常不是静态的,而是具有运动、变换或其他动态属性。

示例:在导航网格中一开始游戏人物的前方有障碍物,人物无法移动过去,我们希望这个障碍物时可以移动,当移开之后角色就可以穿过去了,如下:

但是移开之后会发现中间的网格是断开的,因此我希望将这个障碍物设置为动态障碍物。因此做如下设置:

将这个障碍物重新设置,不勾选静态的

然后重新在导航界面点击bake,然后网格就会重新计算,会发现中间的障碍物不论在不在其中的网格是通的。

现在的效果变成了这个障碍物不论在不在游戏人物都会通过,而我们的目的是当障碍物存在时不能移动过去,障碍物不存在时才能移动过去。

解决办法,为这个障碍物添加

Nav Mesh Obstacle组件:

NavMeshObstacle组件是Unity中用于处理导航障碍物的特定组件。它可以附加到游戏对象上,用于告诉导航系统哪些区域是可行走的,哪些是障碍物。这个组件提供了一些属性和方法,使得在运行时动态修改障碍物的形状和大小成为可能。

主要属性

Shape(形状):
Shape 属性定义了障碍物的形状,可以是`Box`(方块)、`Capsule`(胶囊体)。不同的形状适用于不同类型的障碍物。

Center (中心点):
Center 属性定义了障碍物的中心点相对于游戏对象的位置。这可以用来调整障碍物的位置。

Size(大小):
Size 属性定义了障碍物的大小。对于"Box`和`Capsule `形状,它定义了障碍物在三个轴上的尺寸。

切割:

移动阈值:就是最小移动距离来重新烘焙,越小重新计算的速度越快。

静止时间:障碍物要禁止多长时间,才会进行切割。

仅在静止时切割;勾选这个前面的两个选择才有意义,否则只要一开始移动就会立刻进行烘焙,这样会浪费性能。

作用:当选择这个属性后,会将导航网格切割开。意思是一个物体是切割的动态障碍物,会给我们动态的重新产生一次烘焙,烘焙出来一个新的网格。

当我们在游戏中运行时将这个障碍物移开时,它会重新计算网格,重新帮我们进行烘焙。


当添加这个组件后,当障碍物没有移开之前游戏人物会在障碍物前面停下来。说明当前作为障碍物时生效的。这个就是切割的作用。

二、网格连接

这个有个掉落高度属性,设置这个数值可以去设置游戏人物的跳跃最大高度。

比如将其设置为10,然后点击Bake,有时没有任何变化。这是因为需要对其重新进行设置,我们选中支持跳跃的物体,在导航中的对象属性下选择Generate OffMeshLinks.

这样重新设置后,再次点击烘焙,就能看到在网格中有些部分被连接起来了。

这样就游戏人物移动到台子上就可以直接跳跃下来了。

跳跃距离:

设置这个属性可以在两个物体之间进行跳跃,例如将跳跃距离设置为10.设置后会发现两个台子之间有线段连接,这个就表示这两个物体之间可以跳跃。

箭头就表示跳跃的方向,现在的方向是只能从左边跳跃到右边。

如何设置指定两点之间来回跳跃?如下图中两点,如何设置呢?

任意选择一个物体,为其添加Off Mesh Link组件。

将两个立方体分别挂载到起始和结束位置。这样设置后就能两点之间来回移动。

自动更新位置,当选中这个以后,当物体移动到其他位置,他会重新计算两点传送回的位置。这个连接会随着物体移动。



?

文章来源:https://blog.csdn.net/2301_79022588/article/details/134982356
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。