【发布时间】:2011-09-02 03:47:43
【问题描述】:
我希望导弹按照以下规则跟随玩家:
- 当玩家相对于导弹位于右侧时,以固定速率向右改变旋转
- 否则以相同的速度向左旋转
if (missile.Rotation > 0 && missile.Rotation < Math.PI)
{
if (angle > missile.Rotation && angle < missile.Rotation + Math.PI)
{
missile.Rotation += 0.05f;
}
else
{
missile.Rotation -= 0.05f;
}
}
else
{
if (angle < missile.Rotation && angle > missile.Rotation - Math.PI)
{
missile.Rotation -= 0.05f;
}
else
{
missile.Rotation += 0.05f;
}
}
missile.Position += new Vector2((float)(5 * gameTime.ElapsedGameTime.TotalSeconds * Math.Cos(missile.Rotation)), (float)(5 * gameTime.ElapsedGameTime.TotalSeconds * Math.Sin(missile.Rotation)));
使用此代码,某些导弹似乎出现错误,当我与玩家一起跳跃时,导弹进入无法停止的无限循环(它们会绕圈飞行)
坐标系类似于XNA(360/0°在右侧,270°在顶部...)
谁能帮帮我?
【问题讨论】:
-
我还以为是真正的导弹..
-
angle = 从导弹到玩家的角度
-
@Bojan K:那些不是有 [Ada] 标签而不是 [C#] 吗? :) ...至于问题,您不使用 MathHelper.Lerp() 或类似方法是否有特定原因?
-
@Martin Sojka,是的,我想知道哪个白痴会为此使用 C#,这就是我检查它的原因。我也不知道 [xna] 是什么..