我正在为一些优秀的已停产的XNA编写Windows Phone太空游戏。我需要船的速度逐渐减小,直到用户没有按住驱动按钮时它变为零。听起来很简单,但Velocity是Vector2,我不知道该怎么做。
position += velocity;
speed = 0.04f;
switch (driveBtn.CurrentButtonState)
{
case ControlButton.ButtonState.Released:
//Need to slow down ship when drive is not being held.
break;
case ControlButton.ButtonState.Pressing:
velocity.X += (float)Math.Cos(rotation) * speed;
velocity.Y += (float)Math.Sin(rotation) * speed;
break;
}
答案 0 :(得分:1)
尝试分割速度:
velocity /= 2f;
答案 1 :(得分:1)
另一个选项,可以为您提供更平滑,更可控的速率,您可以使用线性插值:
float rate = 0.5f;
velocity = Vector2.Lerp(velocity, Vector2.Zero, rate);