如果你有一个来自敌人 -> 玩家的向量,你基本上有一个翻译,你可以将它应用到敌人上,让它跳到玩家的位置。您需要通过归一化向量来返回“单位”,这会将向量的总长度设置为“1”,但仍然指向玩家的方向,然后您可以将此值乘以您实际想要的速度获取一个向量来平移敌人,将其移向玩家
正如人们已经回答的那样 - 要获得一个单位,您需要将向量的两个分量的乘积相加,然后取平方根。这与毕达哥拉斯定理有关,例如:
如果你把向量的分量说
(2,2)
这将是这样的:
2
^
|
|
--> 2
然后在原点 (0,0) 和向量末端相交的点之间画一条线 - 你会得到一个三角形......
2
^
/|
/ |
--> 2
这条线代表向量的大小,你取两个分量的平方和,然后对它进行sqrt 得到这条线的长度:
2 * 2 + 2 * 2 = 8
sqrt(8) = 2.82
所以这个向量的长度是 2.82 - 这意味着 2 和 2 的值是单个单位向量大小的 2.82 倍
要获得“1”长或“单位”的分量,我们需要对向量进行归一化——我们通过将每个分量除以幅度来实现
2 / 2.82 = 0.70
听起来是对的 - 我知道这个向量的角度是 45 度(向上 2 到 2 必须是完美的对角线)所以你可以使用余弦或正弦来检查它,因为余弦/正弦提供了向量分量的水平或垂直单位长度对于给定的角度
sin(45) or cos(45) = 0.70
发现
所以现在你知道了朝向玩家的角度使用了一个长度为 1 的向量,其中包含以下分量
(0.7, 0.7)
要将敌人向玩家移动 3 个单位,您只需将组件乘以 3
0.7 * 3 = 2.1
所以
(2.1, 2.1)
在这个物理步骤中将敌人向玩家移动 3 个单位
这有帮助吗?