2013-03-09 88 views
-1

有一名球員。在移動光標時喜歡獲取播放器和光標之間的角度。我的代碼是:獲得2分之間的角度

public void mouseMoved(MouseEvent ev) { 
    float angle = (float) Math.toDegrees(Math.atan2(ev.getX() - player.getCenterX(), 
      ev.getY() - player.getCenterY())); 
    if (angle < 0) { 
     angle += 360; 
    } 
    System.out.println(angle); 
} 

但它沒有返回正確的值。如何修改它以返回正確的值?

+0

想必,你在談論兩個向量之間的角度,對不對? – 2013-03-09 22:18:16

+0

是............ – user2102972 2013-03-09 22:18:52

+2

那麼你的參考點在哪裏? – cHao 2013-03-09 22:19:04

回答

1

這爲我工作:

float angle = (float) Math.toDegrees(Math.atan2(-(ev.getX() - player.getCenterX()), ev.getY() - player.getCenterY())); 
angle += 90; 
+1

爲什麼使用float而不是double?爲什麼不像Jack Maney所建議的那樣使用arccos? – 2013-03-09 22:24:34

+0

因爲他用浮球,並寫了我的答案傑克馬尼張貼他的。我也使用了類似的代碼,因爲我自己製作遊戲^ _ ^ – Wolfii 2013-03-09 22:28:06