我一直试图获得敌人的坐标,这样我就可以采取行动。我使用的代码似乎不起作用:
double absBearing = e.getBearingRadians() + e.getHeadingRadians();
double ex = getX() + e.getDistance() * Math.sin(absBearing);
double ey = getY() + e.getDistance() * Math.cos(absBearing);
我似乎得到奇怪的回报,它给我的值大于字段的大小甚至是减号,有没有人知道如何修改这段代码来获得敌人的X
和{ {1}}以同样的方式返回Y
和X
?
答案 0 :(得分:3)
public class MyRobot extends AdvancedRobot {
private RobotStatus robotStatus;
(...)
public void onStatus(StatusEvent e) {
this.robotStatus = e.getStatus());
}
public void onScannedRobot(ScannedRobotEvent e) {
double angleToEnemy = e.getBearing();
// Calculate the angle to the scanned robot
double angle = Math.toRadians((robotStatus.getHeading() + angleToEnemy % 360);
// Calculate the coordinates of the robot
double enemyX = (robotStatus.getX() + Math.sin(angle) * e.getDistance());
double enemyY = (robotStatus.getY() + Math.cos(angle) * e.getDistance());
}
(...)
}