[英]Robocode Responsive Turning
我正在尝试为robocode制作一个机器人,该机器人在看到机器人时总是垂直旋转。
如果您不知道什么是robocode,请想象一下一个自上而下的游戏,其中以度为单位记录方向
我已经做了一个方程,可以满足我的要求,但是效率很低
(e.getHeading是目标所面对的方向,getHeading是我所面对的方向,请注意,还有一种方法getBearing可以显示相对于敌人的角度)
turnRight( (e.getHeading() + 90) - getHeading());
但是,问题在于它有时会走很长的路,而不是最短的路。 我可以使用什么更好的公式来始终保持正确的方向?
您将不得不归一化的结果
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)
您可以使用
setTurnRightRadians(normalRelativeAngle(e.getBearingRadians() + Math.PI / 2))
e.getHeading()
是敌人的头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.