我正在进行射击游戏,并添加了许多带阵列的敌人,然后在地图上给他们一个随机位置,但我不知道如何让他们在到达他们的位置后移动。这是我的敌人类:
import com.badlogic.gdx.math.Vector2;
import java.util.Random;
public class Enemy {
private static final Random r = new Random();
int x = r.nextInt(36);
int y = r.nextInt(24);
Vector2 vect = new Vector2(x,y);
float ROTATION_SPEED = 500;
public Follower(float SPEED, float rotation, float width, float height,
Vector2 position) {
super(SPEED, rotation, width, height, position);
}
public void advance(float delta, Ship ship) {
if(rotation > 360)
rotation -= 360;
position.lerp(vect, delta);
rotation += delta * ROTATION_SPEED;
super.update(ship);
//Edited: i forget to put this lines:
if(vect.equals(this.getPosition())){
x = r.nextInt(36);
y = r.nextInt(24);
}
}
我应该在这个类中实现什么样的方法让它们在一定时间后移动x / y值?
答案 0 :(得分:1)
在不使用多线程的情况下使用Thread.sleep时,整个游戏将冻结。但是您也可以使用Timer和TimerTask来解决它,这对于初学者来说特别容易(您可以在之前将其添加到代码中):
import java.util.Timer;
import java.util.TimerTask;
public class Enemy{
Timer t;
public Enemy(){ //in your constructor
t = new Timer();
t.scheduleAtFixedRate(new TimerTask(){
public void run(){
/*here the code for the movement, e.g:
x += 5;
y += 5;*/
}
}, delay, speed); //delay is after which time it should start usually delay is 0, speed is the time in ms e.g. 9
}
}
答案 1 :(得分:0)
Thread.sleep是在进行进一步处理之前休眠一段时间的方法。您将很好地开始研究Java中的多线程以轻松解决此类问题。您可以从这里开始:http://docs.oracle.com/javase/tutorial/essential/concurrency/
要立即解决,只需在while循环中编写Thread.sleep()。