C# 寻的导弹,它们是如何工作的?

C# 寻的导弹,它们是如何工作的?,c#,geometry,xna,2d,game-physics,C#,Geometry,Xna,2d,Game Physics,我正在尝试创建的内容 将向玩家发射导弹的物体,如果与玩家碰撞,玩家死亡 问题 导弹如何向玩家移动 如何使导弹移动,使其不会立即直接朝玩家移动(缓慢地以一定角度移动) 我有一个公式,让鼠标成为“玩家”,让导弹朝它飞去 mouse = Mouse.GetState(); mousePosition = new Vector2(mouse.X, mouse.Y); A = (mouse.X - Position.X); B =

我正在尝试创建的内容

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

  • 导弹如何向玩家移动

  • 如何使导弹移动,使其不会立即直接朝玩家移动(缓慢地以一定角度移动)

我有一个公式,让鼠标成为“玩家”,让导弹朝它飞去

        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;

(画画是最好的!)


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

你可以得到从一个点到另一个点的距离,并将其转化为一个方向

//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运行,它都会显示相同的值

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


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

Math.Atan2会将角度返回给你。然后,你可以根据一个小的量(角度)来抵消它,这样它就不会直接指向播放器。我在想:一本关于控制理论的入门书……好吧,但是我如何移动对象,我只是有点困在程序中如何说它。以角度的速度移动它。我可以看一个例子吗,我知道我必须把它移到那个角度,但我怎样才能把它设置成那个角度呢?对不起,我还是个新手。没有惯性的寻的导弹没什么意思。你该怎么避开他们?