我有一个程序在开始时创建多个随机放置的对象(球),现在我试图将玩家球自动移向最近的对象直到它们的中心相同。我已经确定了存储在一个名为distance的数组中的最近对象的距离,其索引为“最接近”,并将速度设置为在其他地方初始化的变量delta,如何使方向正确?马上 它只是对角线移动,但不是朝着最近的球移动
coordinatex [最近]和coordinatey [最近]是最近对象的x和y坐标。
playerObject.getX和playerObjectgetY为我提供了玩家注册的坐标
public void move(int delta) {
for(int i=0; i<distance[closest]; i++) {
if (x<coordinatex[closest] && y<coordinatey[closest]) {
playerObject.setX(playerObject.getX() + 0.1*delta);
playerObject.setY(playerObject.getY() + 0.1*delta);
} else if(x>coordinatex[closest] && y>coordinatey[closest]) {
playerObject.setX(playerObject.getX() - 0.1*delta);
playerObject.setY(playerObject.getY() - 0.1*delta);
} else if(x>coordinatex[closest] && y<coordinatey[closest]) {
playerObject.setX(playerObject.getX() - 0.1*delta);
playerObject.setY(playerObject.getY() + 0.1*delta);
} else if (x<coordinatex[closest] && y>coordinatey[closest]) {
playerObject.setX(playerObject.getX() + 0.1*delta);
playerObject.setY(playerObject.getY() - 0.1*delta);
}
}
}
答案 0 :(得分:0)
与此非常相似:
angle=atan2(ClosestBally-player_y,closestBallx-player_x);
dxperframe = cos(angle);
dyperframe = sin(-angle);
答案 1 :(得分:0)
我看到四个半主(对角线)方向的处理程序,但不四个cardinal directions。例如,在此game中,敌人使用move(int row, int col)
方法逐步接近玩家,显示here,从八个方向中的任意一个方向。