所以我使用box2d
来处理libGDX
中的物理和碰撞。我试图找出碰撞的角度,以便我可以在给定的角度应用某些效果。
做了一些研究,我发现atan2应该是我需要的数学函数来获得正确的角度,但它会返回好奇的结果。对于应位于第二象限的触点,我的角度小于90°。对于第3和第4象限的触点,我得到接触角的正数。有没有人对我在这里做错了什么有任何见解?
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返回的联系信息。所以我想我的问题是,可能是什么问题,这样联系信息会像这样关闭?