Unity Javascript 做一个好的对撞机

Unity Javascript Making a Good Collider

所以,我正在使用 Unity 开发一款游戏,我遇到了一些碰撞问题。问题是我制作的汽车有时会在墙边出现故障,无法后退或前进。即使它没有碰撞。我所做的是添加了 2 个空游戏对象。将它们命名为前保险杠和后保险杠,并添加了一个脚本,当保险杠撞到墙上时会激活该脚本。如果前保险杠撞到墙就不能前进,如果后保险杠撞到墙就不能后退。但这并不是真的那么好。我需要知道如何设置一个好的对撞机,因为当你玩的时候这真的很烦人。汽车也可以达到 50 速度。

假设汽车可以高速撞墙,我会考虑对汽车的刚体使用特定的碰撞检测。

有一些碰撞检测方法用于防止快速移动的物体在没有检测到碰撞的情况下穿过其他物体。

来自 Unity 的文档:

  • 离散: 对场景中的所有其他碰撞器使用离散碰撞检测。其他碰撞器在测试碰撞时将使用离散碰撞检测。用于普通碰撞(这是默认值)。
  • 连续: 对动态碰撞体(有刚体)使用离散碰撞检测,对静态网格碰撞体(没有刚体)使用连续碰撞检测。设置为 Continuous Dynamic 的 Rigidbodies 将在测试对该刚体的碰撞时使用连续碰撞检测。其他刚体将使用 Discreet Collision 检测。 用于连续动态检测需要碰撞的物体。 (这对物理性能有很大影响,如果你没有遇到快速物体碰撞的问题,请将其设置为离散)
  • 连续动态:对设置为连续和连续动态碰撞的对象使用连续碰撞检测。它还将对静态 MeshColliders(没有刚体)使用连续碰撞检测。对于所有其他碰撞器,它使用谨慎的碰撞检测。 用于快速移动的物体

如您所见,您应该对墙壁使用连续检测,对汽车使用连续动态检测。

警告:不要忘记连续检测对性能有很大影响 , 你应该只在有碰撞问题并且对象数量尽可能少的情况下使用它。