如何使对象随机移动



>我正在制作一个游戏,我在屏幕顶部生成敌人,他们向下移动到屏幕底部。我想让他们随机移动。

public void move_randomly(){
    int random_x_pos = rd.nextInt(700);
    if (xPos < random_x_pos){
        xPos += get_speed();
        if (xPos >= random_x_pos){
           // get a new x position
        }
    }
    if (xPos > random_x_pos){
        xPos -= get_speed();
        if(xPos >= random_x_pos){
            // get a new x position
        }
    }
    yPos += get_speed();  //makes the object keep moving down
}

问题是必须在无限循环中调用此方法,即不断重新绘制屏幕的循环,因此random_x_position变量总是在变化。我希望给定的随机 X 位置被"保存",直到对象到达该位置,然后更改它。

您可以创建一个类变量并存储实例,直到您需要更改它。您将在创建类时初始化变量,然后根据需要对其进行更新。它可能看起来像:

public class YourClass{
    int random_x_pos;
    publice YourClass(){
         random_x_pos = rd.nextInt(700);
    }
    ...
public void moveRandomly(){
    //use your variable
    random_x_position...
    if(conditionMet){
         random_x_postion = rd.nextInt(700);
    }
}
...
}

你需要使用某种"冷却",让它在一定时间内朝那个方向移动。 您可以使用 System.currentTimeMillis(( 检查冷却时间是否已延长。

protected double moveCoolDownTime=.2*1000;
public void randomMove() {
    double currentTime=System.currentTimeMillis();
    if ((currentTime-movedTime)>=moveCoolDownTime) {
            speed=random.nextInt(10)-10;
        }
        movedTime=currentTime;
    }
}
    //in your update method
    xPos -= get_speed();

最新更新