归航导弹,它们如何工作?

时间:2014-03-27 14:20:29

标签: c# geometry xna 2d game-physics

我要创建的内容

  • 向玩家发射导弹的物体,如果与玩家发生碰撞,玩家将死亡。

问题

  • 导弹是如何向玩家移动的。

  • 如何使导弹移动,使其不会立即直接向玩家移动(缓慢移动一个角度)。

我有一个鼠标的公式是"播放器"和导弹走向它。

        mouse = Mouse.GetState();

        mousePosition = new Vector2(mouse.X, mouse.Y);

        A = (mouse.X - Position.X);
        B = (mouse.Y - Position.Y);
        C = (A * A) + (B * B);

        C = (float)Math.Sqrt(C);

        Angle1 = A / C;
        Angle2 = B / C;

A Right Triangle with Angles

(绘图是最好的!)

这只能获得从导弹到玩家的距离,现在我需要找到移动导弹的角度或东西,我需要做什么?

1 个答案:

答案 0 :(得分:1)

您可以获得从一个点到另一个点的距离,并将其转换为指向的方向。

//Find the delta time
float delta = (float)gameTime.ElapsedGameTime.TotalSeconds * 60;
//Find the direction
Vector2 direction = mousePosition - misslePosition;
direction.Normalize();
//Move towards it
currentPos += direction * delta;

它需要乘以经过的时间,因此无论你运行什么FPS,它都显得相同。

您可能需要调整速度,但应创建如下模式:

http://i.imgur.com/D8FTFFt.png

如果你想让导弹慢慢转向目标,你可以尝试MathHelper.Lerp来慢慢改变角度。