在随机路径上将对象移动到另一个对象

时间:2012-10-12 01:26:19

标签: java object

我有一个程序在开始时创建多个随机放置的对象(球),现在我试图将玩家球自动移向最近的对象直到它们的中心相同。我已经确定了存储在一个名为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);         
        } 
    }
}

2 个答案:

答案 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,从八个方向中的任意一个方向。