具体方向从一点:如果'斜率'不够,那么是什么?

时间:2012-11-02 20:35:55

标签: java point angle

计划是计算两点(字符和光标)之间的斜率,将其转换为水平角度,并根据该角度切换到特定的字符精灵,使其看起来指向光标(例如:0-30度,一个精灵.30-60度,另一个精灵.60-90另一个,等等)。我之后遇到的问题是斜坡可能在某种程度上相互映射。

我意识到(现在看似很明显)的问题是,在A点处的角色和在B点的光标将具有与字符点B和光标在A点相同的斜率/角度。它没有办法知道指向的方向。

Illustration of my issue

我不知道该怎么办。最简单的解决方案就是让它不会通过这种方式找到玩家的方向(无论是向右还是向左),而是通过箭头键,但我将其作为最后的手段保存为它会导致快速瞄准的问题。

2 个答案:

答案 0 :(得分:2)

double deltaX = point1.x - point2.x;
double deltaY = point1.y - point2.y;
double angleInRadians = java.lang.Math.atan2(deltaX, deltaY);
double length = java.lang.Math.sqrt(deltaX * deltaX + deltaY * deltaY);

答案 1 :(得分:1)

您应该能够使用精灵/光标位置以及斜率来解决此问题。

伪代码:

if(slope is positive and cursor is to the right of sprite)
{
   sprite should face right (first quadrant, 0-90 degrees)
}
else if( slope is positive and cursor is to the left of sprite)
{
   sprite should face left (third quadrant, 180-270 degrees)
} 
//etc