>我正在制作一个游戏,我在屏幕顶部生成敌人,他们向下移动到屏幕底部。我想让他们随机移动。
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();