【发布时间】:2022-11-02 05:28:15
【问题描述】:
我想为八个基本方向中的每一个赋予一个值,以便它指向目标的接近程度。目前我在方向向量和目标向量之间使用dot 乘积,我认为这是这样做的方法,但它不会产生正确的结果。
在屏幕截图中,您可以看到每个方向的点积值,但它们似乎不太正确,因为东方向应该是最好的。
Vector2 pos;//player position 60, 43
Vector2 target = new Vector2(78, 46);
public Vector2[] dirs = new Vector2[] { new Vector2(0, 1), new Vector2(1, 1),
new Vector2(1, 0), new Vector2(1, -1), new Vector2(0, -1),
new Vector2(-1, -1), new Vector2(-1, 0), new Vector2(-1, 1) };// eight cardinal directions
for (int i = 0; i < rays.length; i++) {
Vector2 ray = pos.cpy().add(dirs[i]);
nearest[i] = ray.dot(target);
}
//dot product function
public float dot (Vector2 v) {
return x * v.x + y * v.y;
}
我做错了吗,或者这实际上根本不是计算这个的正确方法?
【问题讨论】: