我想这更像是一个数学问题,但请耐心等待我:)
我有一个定义如下的向量:
var direction:b2Vec2 = new b2Vec2(_target.x - this.x, _target.y - this.y);
direction.Normalize();
我使用
_body.SetLinearVelocity(new b2Vec2(direction.x*2, direction.y*2));
推动身体前进到目标。
我的问题是如何才能找到我身体的相对位置。例如,从该标准化向量,我如何判断目标是在右边,左边,上边还是下边?
我想使用标准化的方向向量来获取我的身体相对于目标的“位置”。怎么可能?
另外,我只需要将相对位置标准化为四个基本方向。
答案 0 :(得分:1)
让我们考虑一些案例,并尝试形成直观的理解 -
1)相对于全局坐标,在(2,2)和身体(-1,1)处的目标
你的方向向量是(3,1)。由于两个成分都是正的,因此目标位于身体的右侧和上方。
1)相对于全局坐标,在(2,-2)和(-1,1)处的物体上瞄准
你的方向向量是(3,-3)。由于x分量是正的,因此目标位于身体的右侧。由于y分量是负的,因此目标在身体下方。
如果您在2D轴上绘制这些点并计算方向向量,这些将变得明显。
答案 1 :(得分:1)
这里的矩阵转换:
_target.y-this.y _target.x-this.x
- _target.x-this.x _target.y-this.y
将您的矢量(并将其缩放x ^ 2 + y ^ 2,但这无关紧要)旋转到x轴。将相同的变换应用于正文的位置,然后使用两个坐标的符号来标识它相对于原始矢量的哪个象限。