所以在另一个问题中我被告知你可以使用点积的简化公式来找到两个向量之间的角度:
angle = atan2(mouseY, mouseX) - atan2(yPos, xPos); //xPos, yPos is position of player
除此之外,根据我的理解,它只是将点作为向量。这就是鼠标和播放器位置插入参数的原因。然而,当我在360度半径范围内将鼠标移动到播放器周围时,播放器的角度和旋转值是从-0.3到-1.4左右... 这不是正确的方法吗?我应该代表向量而不是X,Y位置,而不是其他东西吗?
还有另一个我发现的公式似乎对我没用:
angle = atan2(mouseY - yPos, mouseX - xPos);
答案 0 :(得分:1)
第一种方法是正确的,第二种方法是错误的。函数atan2(x,y)
计算相对于x轴从(0,0)
到(x,y)
的向量的弧度的弧度。因此,计算两个矢量与x轴相关的角度(弧度)是正确的,然后将它们相互减去,以获得两个矢量之间的角度。
函数atan2
的结果是半开区间(-pi,pi]
中的值。以度为单位,这对应于(-180°,180°)
。 0°因此表示向右指向(沿x轴),向上指向向量90°,向左指向向量180°,向下指向向量指向-90°。
您可以通过公式
将结果以弧度转换为角度atan(x,y)*180/pi
因此,如果您想将结果值转换为角度,只需将它们乘以180/pi
。