0

我正在尝试为机器人代码制作一个机器人,当它看到机器人时它总是垂直旋转。

如果您不知道什么是机器人代码,请想象一个自上而下的游戏,其中方向以度数记录

我已经制定了一个方程式,可以满足我的要求,但效率很低

(例如,getHeading 是目标面对的方向,getHeading 是我面对的方向注意还有一个方法 getBearing 可以显示相对于敌人的角度)

turnRight( (e.getHeading() + 90) - getHeading());

但问题是它有时会走很长的路,而不是最短的路线。我可以使用什么更好的方程式来始终正确地转向?

4

2 回答 2

0

你将不得不规范化的结果

degdiff = (e.getHeading() + 90) - getHeading()

所以它在-180..180的范围内。这是要么

if(degdiff >  180) degdiff -=360;
if(degdiff < -180) degdiff +=360;

或者

degdiff = (degdiff%360 + 540)%360 -180

接着

turnRight(degdiff)
于 2017-05-22T07:00:40.410 回答
0

您可以使用

setTurnRightRadians(normalRelativeAngle(e.getBearingRadians() + Math.PI / 2))

e.getHeading()是敌人的航向。

于 2017-10-07T17:48:45.387 回答