我正在XNA中制作一个简单的游戏(对于Windows,如果这有所不同),当玩家向右移动时,我使用以下代码来旋转船模,使其看起来像是船倾向于strafe:
RotationMatrix = Matrix.CreateRotationX(MathHelper.PiOver2) *
Matrix.CreateRotationY(0.4f);
这样可行,但它会立即使船舶弹出所需的旋转。我宁愿在几帧内轻松自如。作为参考,旋转矩阵声明如下:
public Matrix RotationMatrix = Matrix.CreateRotationX(MathHelper.PiOver2);
我可以做些什么来抚平精益?
答案 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);
}
从我现在的位置,我无法检查此代码是否有效,所以这只是想法;)。