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

Java 在随机路径上将对象移动到另一个对象,java,object,Java,Object,我有一个程序,在开始时创建多个随机放置的对象(球),现在我试图将球员的球自动移向最近的对象,直到它们的中心相同。我已经确定了最近物体的距离,该距离存储在一个称为“距离”的数组中,索引为“最近”,并将速度设置为在其他地方初始化的变量delta,我如何才能获得正确的方向?马上 它只沿对角线移动,但不朝向最近的球 coordinatex[最近]和coordinatey[最近]是最近对象的x和y坐标 playerObject.getX和playerObject.gety为我提供了播放器对象的坐标 pub

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

coordinatex[最近]和coordinatey[最近]是最近对象的x和y坐标

playerObject.getX和playerObject.gety为我提供了播放器对象的坐标

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);         
        } 
    }
}
公共无效移动(int delta){

对于(int i=0;i坐标[最近的]&&y类似于此的东西:

angle=atan2(ClosestBally-player_y,closestBallx-player_x);
dxperframe = cos(angle);
dyperframe = sin(-angle);

我看到了四个半基数(对角线)的处理程序方向,但不是四个方向。例如,在这种情况下,敌人使用所示的方法从八个方向中的任何一个方向逐步接近玩家。

您能解释一下dxperframe和dyperframe吗?但是我的程序没有键盘输入,对象应该自动移动到另一个对象。我假定您的
移动()
在模拟时间的每一个增量都被调用。游戏使用默认启用的
javax.swing.Timer
。单击任意方块可以看到敌人在移动玩家身上前进。