U3D引擎的角色重叠显示

起初,我认为我必须手动编写代码来绕过障碍,并在找到路径时重新计算路径。后来,我放弃了。我想到了加一个刚体和碰撞盒,但是被碰撞到了。所以我加了一个物理材质属性组件来设置bounce的Bounce属性,还是有很多抖动。最后,我使用了角色控制器组件,然后修改了更新角色位置的方法。

角色的更新职位不能直接修改职位值,需要以下方法:

normalMoveVector =(position to-game object . transform . local position)。归一化*速度;

character controller character _ controller = get component & lt;字符控制器& gt();

人物_控制器。move(normalMoveVector * time . delta time);

特定角色控制器的设置面板可以参考以下内容:

属性属性

高度

高度

角色的胶囊碰撞器高度。更改此选项将沿Y轴正反两个方向缩放碰撞器。

角色的胶囊碰撞器的高度。改变它的大小将使碰撞器在Y轴方向的两端膨胀和收缩。

半径

半径

胶囊对撞机的半径长度。这基本上就是对撞机的宽度。

胶囊对撞机的半径长度。舞台碰撞器的宽度。

斜率极限

斜率极限

限制碰撞器只能攀爬等于或小于指定值的斜坡。

限制碰撞器攀爬小于或等于该值的斜坡。

步进偏移

陡度

只有当距离地面的距离小于指定值时,角色才会登上楼梯。

角色可以踩的最高步高。

最小移动距离

最小移动距离

如果角色试图移动到指示值以下,它将根本不会移动。这可以用来减少抖动。在大多数情况下,该值应该保留为0。

如果角色移动的距离小于该值,角色将不会移动。这样可以避免颤抖。在大多数情况下,该值设置为0。

皮肤宽度

表皮厚度

两个对撞机可以穿透对方皮肤的宽度。较大的蒙皮宽度可减少抖动。较低的皮肤宽度会导致角色变得僵硬。一个好的设置是使这个值为半径的10%。

皮肤厚度决定了两个碰撞器可以互相穿透的深度。更厚的皮肤会导致颤抖。较小的蒙皮厚度值会导致角色被卡住。合理的设置是使该值等于半径的10%。

中心

中心

这将抵消世界空间中的胶囊碰撞器,并且不会影响角色如何旋转。

该值决定了胶囊碰撞器在世界空间中的位置,并且不影响角色的动作。

细节细节

传统的末日风格的第一人称控制是不现实的。这个角色以每小时90英里的速度奔跑,然后立即停下来,在一角硬币上转弯。因为这太不现实了,使用刚体和物理学来创造这种行为是不切实际的,而且会让人觉得不对。解决方案是专门的角色控制器。它只是一个胶囊形状的碰撞器,可以被告知按照脚本向某个方向移动。然后,控制器将执行移动,但会受到碰撞的约束。它将沿着墙壁滑动,走上楼梯(如果它们低于台阶偏移)并在坡度限制内的斜坡上行走。

传统的“末日战士”风格的第一人称控制并不是基于物理现实。这个角色以每小时90英里的速度奔跑,然后立即停下来,并可以非常快地转身。因为太不真实了,用刚体和物理效果来创造这种行为是不现实的,感觉也不对。解决方案是一个特殊的角色控制器。很简单,一个胶囊碰撞器附有一个可以控制其运动的脚本。控制器将执行脚本传达的动作,但会受到碰撞的影响。它会沿着墙、台阶(如果台阶的高度低于“台阶偏移”特性)和坡度小于坡度限制的坡度向上移动。

控制器本身不会对力做出反应,也不会自动推开刚体。

控制器不会对施加给自己的力做出反应,也不会自动推开其他刚体。

如果您想使用角色控制器推动刚体或对象,您可以通过脚本通过OnControllerColliderHit()函数将力施加到它与之碰撞的任何对象。

如果希望角色控制器推开其他刚体或对象,可以将OnControllerColliderHit()函数添加到附加到对象的脚本中,以便对它们施加力可以导致碰撞。

另一方面,如果你想让你的玩家角色受到物理的影响,那么你最好使用刚体而不是角色控制器。

另外,如果你希望你的游戏角色受到物理效果的影响,你最好使用刚体而不是角色控制器。

仔细调整你的角色。

可以修改高度和半径以适合角色的网格。对于类似人类的角色,建议始终使用2米左右。如果轴心点不在角色的正中心,也可以修改胶囊的中心。

可以修改高度和半径的大小,以使控制器与角色栅格相匹配。对于人形角色,总是建议使用2米左右。也可以修改胶囊的“中心”属性,使旋转中心与角色中心重合。

步长偏移也会对此产生影响,对于2米大小的人,请确保该值介于0.1和0.4之间。

“步长偏移”属性也会影响角色,确保对于身高两米的人,该值介于0.1和0.4之间。

斜率限制不能太小。通常使用90度的值效果最好。由于胶囊的形状,角色控制器将不能爬上墙壁。

坡度限制不能设得太小,一般90度比较合适。因为是胶囊,角色控制者不会爬上墙。

不要卡住。

调整角色控制器时,蒙皮宽度是最重要的属性之一。如果你的角色被卡住了,很可能是因为你的皮肤宽度太小了。皮肤宽度会让物体稍微穿透控制器,但它会消除抖动,防止它卡住。

调整角色控制器时,蒙皮宽度是最难正确设定的边界值之一。如果你的角色卡住了,很有可能是因为值设置的太小了。皮肤宽度会让其他物体穿透控制器一点,但可以避免晃动,防止卡住。

保持皮肤宽度至少大于半径的0.01且大于半径的10%是一个很好的做法。

实际上,更好的值至少大于半径的0.01且大于半径的10%。

我们建议将最小移动距离保持在0。

建议将最小移动距离设置为0。

提示提示

如果你发现你的角色经常被卡住,试着调整你的皮肤宽度。

如果您发现您的角色经常被卡住,请尝试调整皮肤宽度值。

如果您编写自己的脚本,角色控制器可以使用物理来影响对象。

如果您编写自己的脚本,角色控制器可以使用物理效果来影响其他对象。

角色控制器可以不受物理对象的影响。

角色控制器不能通过物理效果受到其他对象的影响。