轻松进入模型旋转

时间:2012-02-21 07:07:39

标签: c# 3d matrix xna

我正在XNA中制作一个简单的游戏(对于Windows,如果这有所不同),当玩家向右移动时,我使用以下代码来旋转船模,使其看起来像是船倾向于strafe:

RotationMatrix = Matrix.CreateRotationX(MathHelper.PiOver2) *
                 Matrix.CreateRotationY(0.4f);

这样可行,但它会立即使船舶弹出所需的旋转。我宁愿在几帧内轻松自如。作为参考,旋转矩阵声明如下:

public Matrix RotationMatrix = Matrix.CreateRotationX(MathHelper.PiOver2);

我可以做些什么来抚平精益?

1 个答案:

答案 0 :(得分:1)

我认为您只需要在代码中加入时间。在Xna中,您可以访问GameTime对象(例如,在Game.Draw方法中),因此,您可以尝试这样的事情:

private float _seconds = 0;
protected override void Draw(GameTime gameTime)
{
    if (_seconds < 1)
    {
        _seconds += gameTime.ElapsedGameTime.TotalSeconds;
    }
    RotationMatrix = Matrix.CreateRotationX(MathHelper.PiOver2) *
         Matrix.CreateRotationY(0.4f * _seconds);
    base.Draw(gameTime);
}

从我现在的位置,我无法检查此代码是否有效,所以这只是想法;)。