我正在尝试为机器人制造一个机器人,当它看到一个机器人时,它总是垂直转动。
如果你不知道什么是robocode只是想象一个自上而下的游戏,其中方向以度数记录
我已经制定了一个方程式,可以满足我的要求,但效率非常低
(e.getHeading是目标面向的方向, getHeading是我面临的方向 请注意,还有一个方法getBearing显示相对于敌人的角度)
turnRight( (e.getHeading() + 90) - getHeading());
但问题是它有时会走很远的路而不是最短的路线。我可以用什么更好的方程式来改变方向?
答案 0 :(得分: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)
答案 1 :(得分:0)
您可以使用
setTurnRightRadians(normalRelativeAngle(e.getBearingRadians() + Math.PI / 2))
e.getHeading()
是敌人的标题。