我正在尝试使用lwjgl和opengl计算我的鼠标和'player'Im之间的角度。这是旋转图像的用途:
GL11.glTranslatef(p.getPosition().x+playerTexture.getTextureWidth()/2, p.getPosition().y+playerTexture.getTextureHeight()/2, 0);
GL11.glRotated(0, 0.0f, 0.0f, 1.0f);
GL11.glTranslatef(-p.getPosition().x+-playerTexture.getTextureWidth()/2, -p.getPosition().y+-playerTexture.getTextureHeight()/2, 0);`
我尝试了两件事,但每次只是不停地旋转图像。我的尝试:
public float getAngle(Player p) {
float angle = (float) (Math.atan2(Mouse.getY() -
p.getPosition().y+playerTexture.getTextureHeight()/2 , Mouse.getX() -
p.getPosition().x+playerTexture.getTextureWidth()/2));
return angle;
}
public void calcAngle(Player p){
double y = Mouse.getY() - p.getPosition().y;
double x = Mouse.getX() - p.getPosition().x;
double dir = Math.atan2(y, x);
}
我希望有人知道解决这个问题。感谢。
答案 0 :(得分:0)
我无法看到您实际使用getAngle
方法的位置,但我怀疑您在openGL旋转功能中直接使用Math.atan2
计算的角度?
如果是这样的话,我猜你会混淆单位。我相信Math.atan2
会返回弧度,而openGL则需要度数。尝试使用Math.toDegrees(angle)
。
然而,我希望这能显示出非常微小的角度,而不是疯狂地旋转......
我要做的第一件事就是将角度写入控制台。是0,90,180等,还是0,1.723,3.1431等?