为了成为刚体,我的海盗船对撞机必须是凸的(如果不是的话,Unity 会给我错误)。我有一个更详细的(非凸)对撞机,我想将其用于船内的光线投射,但是当我将其添加为子对象时,刚体会自动尝试使用它。
有没有一种方法可以让我有一个单独的网格碰撞器作为刚体的子项?有什么解决办法吗?
将详细网格放在单独的图层上不起作用。我唯一能想到的就是用许多单独的凸对撞机制作飞船,但这是我想避免的解决方案,因为获得平滑的内部曲线将需要很多很多对撞机。
对于凸碰撞体,我建议将它们与船舶非运动学刚体解耦。
将这些复杂的网格设置在运动学刚体父级中。然后根据固定更新,将船舶的位置与运动父级同步。
这样,船舶物理始终与船舶物理部件分开。然后,您可以有选择地添加要包含在完整物理模拟中的碰撞体,但这些碰撞体必须是非凸的。
其他事项:
对于物理刚体创建一个更简单的网格(可能基于原始网格)。并确保它可以是凸的。或者创建一些原始碰撞器并将它们与游戏对象对齐。
如果是动态生成的。您可能需要添加一些逻辑来获取所有重要的最外层点并动态创建网格。
对于运动刚体,您需要添加一种方法来检测碰撞和进入该区域的物体。您可以创建一个简单的盒子碰撞器 + 网格碰撞器来确定物体是否在船上或附近。
运动学同步对象将经历所有内容,因为它们位于模拟之外,因此运动学对象内部作为子对象的任何内容都需要由 IE 播放器进行保护。如果物理模拟与物体足够匹配,这种情况就不会发生……但总是值得添加一个防护装置。