首页 > 解决方案 > Unity Player 穿过物体

问题描述

玩家和物体都有碰撞体和刚体,物体的位置和旋转锁定,玩家只有旋转锁定。当玩家走到街区时,玩家会穿过街区,尽管它们确实会产生一些阻力。要移动玩家我设置刚体的速度,并在 FixedUpdate 中执行此操作。我不知道为什么会这样,有什么想法吗?

代码的主要部分是:( rigidBody.velocity = new Vector3(direction.x, rigidBody.velocity.y + (-Gravity * Time.deltaTime), direction.z); 方向由 WASD 键确定,我使用自己的重力)

标签: unity3d

解决方案


首先,您不需要将速度乘以 time.DeltaTime,因为您是在 FixedUpdate() 方法中移动对象;它使用固定的时间间隔,因为物理引擎不与常规游戏引擎同步运行。此外,两个物体不需要刚体就可以相互碰撞。我建议在设置中查看您的碰撞矩阵并验证您需要碰撞的所有内容都已正确检查。正如其他人所说,检查刚体上的运动学。

使用自己的重力工作的最后一个建议。不要改变游戏引擎的实际重力值。通常建议您使用乘数变量并将其应用于已由物理引擎设置的恒定重力。如果您正在完全编辑重力,则可以考虑使用角色控制器。


推荐阅读