我希望使用 Physics.IgnoreCollision 避免子弹相互碰撞。子弹是在第8层生成的。为什么这不起作用?如何忽略与同一层上的所有物体的碰撞?
// bulletscript.cs
gameObject.layer = 8;
// maingamescript.cs
Physics.IgnoreCollision(8,8);
第8层可能还有其他应该被忽略的对象(例如玩家飞船)。
我希望使用 Physics.IgnoreCollision 避免子弹相互碰撞。子弹是在第8层生成的。为什么这不起作用?如何忽略与同一层上的所有物体的碰撞?
// bulletscript.cs
gameObject.layer = 8;
// maingamescript.cs
Physics.IgnoreCollision(8,8);
第8层可能还有其他应该被忽略的对象(例如玩家飞船)。
问题排查:
无需转到物理管理器,OP已经执行了与物理管理器相当的正确代码。真正的问题是GameObject应该已经用正确的层实例化,因为层更新可能需要一些时间才能生效。
另一个解决方法是禁用/重新启用碰撞器。