我最近计算了一些实体以中心的一个特定实体为目标,我用这个函数来决定他们去哪个方向:
double xa = 0, ya = 0;
double targetX = mother.getX();
double targetY = mother.getY();
double deltaX = targetX - x;
double deltaY = targetY - y;
double speed = 0.5d;
double dir = Math.atan2(deltaY, deltaX);
xa += (speed * Math.cos(dir));
ya += (speed * Math.sin(dir));
从那时起,移动diagonally
的实体移动速度比直接移动vertically
和horizontally
的实体慢一点。我怎么能重新计算这个以便它们以相同的速度移动?
答案 0 :(得分:0)
您的代码看起来是正确的。连续(xa
,xb
)之间的距离应始终完全相同。
你是否只是在一个没有延迟或定时器的循环中运行这个平板?也许正在发生的事情是atan2
被优化以在其一个参数为零(垂直和水平情况)时更快地计算,因此它将更快地绕过循环。
我建议您使用Timer.html#scheduleAtFixedRate
来确保您的迭代持续时间相等,将代码放在TimerTask
内。