Легкость при вращении модели - PullRequest
1 голос
/ 21 февраля 2012

Я делаю простую игру в XNA (для Windows, если это имеет значение), и когда игрок движется вправо, я использую следующий код, чтобы повернуть модель корабля, чтобы он выглядел так, как будто корабльопираясь на полосу:

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

Это работает, но мгновенно переводит корабль в нужное вращение.Я бы предпочел, чтобы это облегчилось в течение нескольких кадров.Для справки, матрица вращения была объявлена ​​следующим образом:

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

Что я могу сделать, чтобы сгладить наклон?

1 Ответ

1 голос
/ 21 февраля 2012

Я думаю, что вам просто нужно включить время в ваш код. В 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);
}

С того места, где я сейчас, я не могу проверить, действителен ли этот код, так что это только идея;).

...