【发布时间】:2016-03-23 16:40:12
【问题描述】:
我正在开发一个 2D 物理游戏,该游戏涉及目前使用复杂多边形碰撞器的对象之间的碰撞。
当物体发生碰撞时,我使用 otherObject.contacts[0].normal 获得接触点的法线,并使用 Rigidbody2D.AddForceAtPosition 以相等但相反的方向将物体敲开,力乘以法线由一个常数。
大多数情况下,这可以完美运行,但我发现当与多边形碰撞器中的凹形部分(又名:向内“倾角”)发生碰撞时,法线将被翻转,而对象将改为被推向对方。
或者,我还有其他方法可以解决这个问题吗?
蓝色圆圈区域是有问题的凹面部分的示例
【问题讨论】:
-
只是出于好奇...... “使用 Rigidbody2D.AddForceAtPosition 将物体敲开......” 你为什么要这样做? PhysX 会完全自动为您完成这项工作,对吗??
-
我理解这种困惑。澄清一下:当物体碰撞时,它们应该被向后吹(想象一下在接触点发生爆炸)
-
嗯,PhysX 会为你做这件事,只需更改 PhysicMaterial 对吗?
-
是的,但我希望击退力保持一致,并且不依赖于碰撞速度。
-
公平,那么 (A) 我不知道为什么你正在做的事情不起作用..你很确定也许 它正在工作 但它实际上反弹的部分与您想象的不同,或者某些类似的部分,并且(B)您确实可以使用“小型对撞机”轻松地做到这一点 - 或者更确切地说,如果您必须使用多边形对撞机,然后定制就是这样,你知道,“不那么详细”(但仍然尽可能详细)
标签: unity3d