簡體   English   中英

如何使物體隨機移動

[英]How can I make an object move randomly

我正在做一個游戲,在該游戲中,我會在屏幕頂部生成敵人,然后將敵人向下移動到屏幕底部。 我想讓它們隨機移動。

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM