2012-04-12 39 views
0

我正在製作Java3D遊戲(Java3D Project here),我想知道如何將玩家相對於其圍繞y軸的位置和旋轉角度進行移動。Java3D遊戲動作

我可以圍繞y軸旋轉播放器並設置位置,但是相對於x和z軸設置位置,所以如果播放器相對於原始旋轉朝後,那麼當您按下前鋒的關鍵,球員倒退。

我該怎麼做才能讓玩家走向它所面對的方向?

回答

2

您需要使用輸入的差異(向前,向後,向左,向右)跟蹤運動,然後使用極座標函數將其轉換爲絕對座標(x,z)。

例如(只是向前運動):

move.x = forward*(Math.sin(yrotate)) 
move.z = forward*(Math.cos(yrotate)) 

調整完美。橫向運動(strafe)將顛倒sin/cos。

+0

是以度數還是弧度爲單位......? – DankMemes 2012-04-12 22:22:10

+0

應該以弧度表示,這就是Math.sin/cos假定的值。要找出哪個是哪個,回想一下cos(0)= 1和sin(0)= 0;這意味着無論開始定位的玩家 - 沿x或z移動 - 都應該有cos部分。我假設z是因爲OpenGL。 – 2012-04-13 02:34:46

+0

逆轉意味着否定? – 2012-08-23 11:46:14