0

所以我box2d用来处理物理和碰撞libGDX。我试图找出碰撞的角度,以便我可以在给定的角度应用某些效果。

做了一些研究,我发现 atan2 应该是我需要得到正确角度的数学函数,但它返回了奇怪的结果。对于应该在第二象限的接触,我得到的角度小于 90。对于第三和第四象限的接触,我得到接触角的正数。有没有人知道我在这里做错了什么?

float other_x = contact.getWorldManifold().getPoints()[0].x * GameScreen.BOX_TO_WORLD;
float other_y = contact.getWorldManifold().getPoints()[0].y * GameScreen.BOX_TO_WORLD;
float playerXpos = this.getX();
float playerYpos = this.getY();

float damageAngle = (float)Math.atan2((other_y - playerYpos), (other_x - playerXpos));

damageAngle = (float) (damageAngle * (180d/Math.PI));

是的,世界流形的索引确实包含坐标信息。我似乎无法弄清楚为什么atan2要返回这些值。

编辑所以我认为问题不在于 atan2,而在于 WorldManifold 返回的联系信息。所以我想我的问题是,可能是什么问题,以至于联系信息会像这样关闭?

4

0 回答 0