2012-08-12 148 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