0

我有一个程序,它在开始时创建多个随机放置的对象(球),现在我试图将玩家球自动移向最近的对象,直到它们的中心相同。我已经确定了存储在名为 distance 的数组中的最近对象的距离,索引为“最近”,并将速度设置为在其他地方初始化的变量 delta,我如何获得正确的方向?现在它只是沿对角线移动,但不会向最近的球移动

coordinatex[closest] 和 coordinatey[closest] 是最近对象的 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);         
        } 
    }
}
4

2 回答 2

0

与此非常相似的东西:

angle=atan2(ClosestBally-player_y,closestBallx-player_x);
dxperframe = cos(angle);
dyperframe = sin(-angle);
于 2012-10-12T01:36:23.523 回答
0

我看到了四个半基本(对角线)方向的处理程序,但没有看到四个基本方向。例如,在这个游戏中,敌人使用此处move(int row, int col)所示的方法从八个方向中的任何一个逐步接近玩家。

于 2012-10-12T01:49:03.537 回答