【问题标题】:Homing Missiles, How Do They Work?寻的导弹,它们是如何工作的?
【发布时间】:2014-03-27 14:20:28
【问题描述】:

我正在尝试创建的内容

  • 一个会向玩家发射导弹的物体,如果它与玩家发生碰撞,玩家就会死亡。

问题

  • 导弹如何向玩家移动。

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

我有一个公式,鼠标是“玩家”,而导弹则指向它。

        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;

(画画最好!)

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

【问题讨论】:

  • Math.Atan2 会将角度返回给您。然后,您可以根据少量(角度)偏移它,这样它就不会直接指向玩家。
  • 我在想:一本关于控制理论的入门书……
  • 好的,但是我该如何移动对象,我只是有点卡在程序中怎么说。
  • 按角度移动它。
  • 我可以看一个例子吗,我知道我必须将它移动到那个角度但是我该如何设置它呢?抱歉,我对这些东西还是有点陌生​​。

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


【解决方案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 运行,它看起来都是一样的。

您可能需要调整速度,但它应该创建一个这样的模式:

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

【讨论】:

  • 没有惯性的寻的导弹并不好玩。你应该如何躲避他们?
猜你喜欢
  • 2015-02-11
  • 2014-09-08
  • 1970-01-01
  • 2016-10-27
  • 2011-08-30
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多