好的,所以我有一艘船根据轴向上和向下移动,无论船在哪里。
如何使船舶朝向其面向的方向移动?也就是说,如果我的船朝向东方,那么钥匙就会向北而不是向东移动。
答案 0 :(得分:1)
你的问题不是很明确 - 我假设你正在使用模型和矩阵(而不是SpriteBatch或其他东西)。所以,猜猜 - 我会说矩阵运算的顺序是不正确的。
This answer对类似的问题可能有帮助。
每个矩阵操作都发生在原点周围。因此,如果您在之后进行旋转,则将船舶移动到位,您的旋转也将有效地“旋转”移动方向。
答案 1 :(得分:0)
最简单的方法是使角度和速度变化,因此当您左右单击时可以更改角度,当您上下单击时,您可以改变船速。
KeyboardState ks;
float speed = 0;
float angle = 0;
protected override void Update(GameTime gameTime)
{
ks = Keyboard.GetState();
if(ks.IsKeyDown(Keys.Up)) speed += 10;
if (ks.IsKeyDown(Keys.Down)) speed -= 10;
if (ks.IsKeyDown(Keys.Right)) angle += 10;
if (ks.IsKeyDown(Keys.Left)) angle -= 10;
}
答案 2 :(得分:0)
你需要像这样方向向量
Vector3 direction = Vector3.Transform(Vector3.Forward, Matrix.CreateFromYawPitchRoll(yaw, pitch, roll));
接下来,获取力度向量
Vector3 velocity = direction * speed;
移动你的船
float time (float) = gameTime.ElapsedTime.TotalSeconds;
position += velocity * time;
在此示例中,偏航为角度,音高且滚动保持为0.