У меня есть модель, представляющая корабль игрока, постепенно наклоняющийся, когда игрок стреляет.Например, вот код, который наклоняет корабль вправо:
В Update()
класса Игры:
if (ship.rightTurnProgress < 1 && (currentKeyState.IsKeyDown(Keys.D)))
{
ship.rightTurnProgress += (float)gameTime.ElapsedGameTime.TotalSeconds * 30;
}
В Update()
класса корабля:
if (currentKeyState.IsKeyDown(Keys.D))
{
Velocity += Vector3.Right * VelocityScale * 10.0f;
RotationMatrix = Matrix.CreateRotationX(MathHelper.PiOver2) *
Matrix.CreateRotationY(0.4f * rightTurnProgress);
}
Это то, что я пытаюсь сделать, чтобы освободиться от наклона, когда он прекращает обстрел:
В Update()
класса Игры:
if (ship.rightTurnProgress > 0 && currentKeyState.IsKeyUp(Keys.D))
{
ship.rightTurnProgress -= (float)gameTime.ElapsedGameTime.TotalSeconds * 30;
}
В Update()
класса Корабль:
if (currentKeyState.IsKeyUp(Keys.D) && rightTurnProgress > 0)
{
RotationMatrix = Matrix.CreateRotationX(MathHelper.PiOver2) *
Matrix.CreateRotationY(-0.4f * rightTurnProgress);
}
Поскольку облегчение бедного работает без проблем, я думал, что выход из бедного будет простым делом, направленным на изменение процесса.Тем не менее, он имеет тенденцию не возвращаться к позиции по умолчанию после долгого перерыва.Если вы нажмете клавишу, она полностью вернется к полному наклону в противоположном направлении.Это совсем не то, что я ожидал.Что мне здесь не хватает?