试图找到两点之间的距离

问题描述 投票:0回答:2

我正在尝试找出2个向量之间的距离。目前,这是我的代码。

if (((enemyOrigin.X - player.playerOrigin.X) * (enemyOrigin.X - player.playerOrigin.X) + (enemyOrigin.Y - player.playerOrigin.Y) * (enemyOrigin.Y - player.playerOrigin.Y)) < 80 * 80)
            isEnemyInRange = true;

我有一个A *路径查找在if语句中正常运行,该语句检查isEnemyInRange是否为false。因此,如果敌人离开80像素,则应该保持静止。

 if (!isEnemyInRange)
        {
             //A*//
        }

有了这一切,敌人并没有保持80像素的距离,它只是像其他情况一样,应该找到玩家的位置。

c# xna monogame
2个回答
0
投票

您可以使用默认的Vector2.Distance方法来计算两个向量之间的距离。

Vector2.Distance(enemyOrigin, player.playerOrigin)

假设这两个变量将各自的位置表示为Vector2

附加阅读:https://docs.microsoft.com/en-us/previous-versions/windows/silverlight/dotnet-windows-silverlight/bb196336%28v%3dxnagamestudio.35%29


-2
投票

假设您有两个向量:'a'和'b'。

这里是获取它们之间距离的公式:

  1. c = a-b(a.x-b.x,a.y-b.y,a.z-b.z)
  2. ((c.x * c.x)+(c.y * c.y)+(c.z * c.z)] >>
  3. 距离= sqrt(c)
  4. 如果您仍然不理解,那么您应该学习数学,这里是参考:http://mathonline.wikidot.com/the-distance-between-two-vectors

© www.soinside.com 2019 - 2024. All rights reserved.