2012-08-12 150 views
1

我正在將向量2輸入作爲LeftStick並將其圍繞Z軸旋轉到玩家面對的角度。遊戲不會施加旋轉,玩家無論面對什麼,都會朝相同的方向前進。相對於玩家角度調整玩家移動

Matrix movmentRotation = Matrix.CreateRotationZ(MathHelper.ToRadians(player.yaw)); 
Vector2 move = Vector2.Transform(leftStick, movmentRotation); 
player.postion.X += move.X; 
player.postion.Y += move.Y; 

回答

0

我覺得代碼有沒有意義的,我不明白你爲什麼要旋轉leftstick矢量...

  1. 如果你想掃射,你只需要添加leftstick矢量乘以速度因子。這樣,您的玩家角度不會被修改,玩家會沿着左手方向移動。

  2. 如果你希望你的球員面對的leftStick方向,你必須重新計算player.yaw

    player.yaw = Math.atan2(leftStick.Y, leftStick.X); 
    

    player.yaw += (Math.atan2(leftStick.Y, leftStick.X) - player.yaw) * 0.1f; 
    
+0

如果玩家面朝-x和他向前推動左邊的棍子會使他向+ x方向移動我希望移動命令與玩家面對的方式相關。如果玩家面向+ y或+ x和+ y的中間位置,那麼他應該朝這個方向前進。現在無論玩家面向前進方向如何向+方向移動。 – FreakinaBox 2012-08-13 19:13:14