2011-06-01 76 views
5

我將製作一款遊戲,您可以在上面看到一個人物跑來跑去。但問題是我如何讓角色始終看着鼠標?我該如何計算角度,以便可以朝鼠標拍攝(我正在尋找的位置)。我想你必須玩三角和類似的東西來獲得角度,但我真的不知道如何。Java遊戲開發 - 在鼠標座標處查看並拍攝

我很擅長數學,所以如果你們給我一些幫助,我可能會想出來。

而且對不起,我最終的英文不好,我是瑞典人:)

感謝, Alexandberg

+0

我想你回答了你自己的問題...使用trig – gshauger 2011-06-01 23:23:44

回答

1
double angle = Math.atan2(yMouse-yChar, xMouse-xChar); 
+0

我認爲這並沒有奏效。我只有-3到3的數字,但我不知道如何處理它們。我認爲角度更像0-360。 – ASandberg 2011-06-02 00:24:45

+1

它實際上是pi,因爲它是弧度。要將其轉換爲度,請調用Math.toDegrees() – 2011-06-02 01:54:06

+0

謝謝,角度現在正在工作(除角度介於-180和180之間,但我可以修復)。問題是,我如何繪製通過鼠標從播放器中移出的一條線(它在擊中鼠標位置後繼續)。現在我得到了玩家和鼠標點之間的距離和角度。 – ASandberg 2011-06-02 10:15:43

1

如你所說的一大提示可以在trig的

Point pl = getCharacterLox(); 
Point mouse = getMouseLoc(); 
double cos = (mouse.getX()-pl.getX()); 
double sin = (mouse.getY()-pl.getY()); 
cos/=Math.hypot(cos,sin);//normalize 
double angle = Math.copySign(Math.acos(cos),sin); 

我曾經發現在最後一行有一個小技巧:acos在0和PI之間,但是如果sin是負數,它應該被否定,如果sin爲0,它將評估爲+0.0,角度將爲0或PI無論如何不管

+0

非常感謝,我想我現在明白了。 編輯:當我嘗試打印角度來檢查它是否工作,它只是在0-3(aprox)之間。我如何從中獲得角度?因爲我現在沒有看到我現在將如何使用角度做任何事情。 – ASandberg 2011-06-01 23:56:05