首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Robocode响应式转向

Robocode响应式转向
EN

Stack Overflow用户
提问于 2017-05-22 13:07:31
回答 2查看 132关注 0票数 0

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

如果你不知道机器人代码是什么,想象一下一个自上而下的游戏,它的方向是以度为单位记录的

我已经做了一个方程式来做我想做的事,但它的效率非常低

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

代码语言:javascript
复制
turnRight( (e.getHeading() + 90) - getHeading());

但问题是,它有时会走很长的路,而不是最短的路线。有什么更好的方程式可以让我总是转向正确的方向呢?

EN

回答 2

Stack Overflow用户

发布于 2017-05-22 15:00:40

您必须将结果规范化

代码语言:javascript
复制
degdiff = (e.getHeading() + 90) - getHeading()

所以它在-180..180的范围内。这是其中之一

代码语言:javascript
复制
if(degdiff >  180) degdiff -=360;
if(degdiff < -180) degdiff +=360;

代码语言:javascript
复制
degdiff = (degdiff%360 + 540)%360 -180

然后

代码语言:javascript
复制
turnRight(degdiff)
票数 0
EN

Stack Overflow用户

发布于 2017-10-08 01:48:45

您可以使用

代码语言:javascript
复制
setTurnRightRadians(normalRelativeAngle(e.getBearingRadians() + Math.PI / 2))

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44105017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档