如何在android中使用LIBgdx将随机生成的对象移动到屏幕中心

时间:2016-09-15 11:29:58

标签: java android libgdx

我是初学Android游戏程序员,我使用LIBgdx

我有一个playState类

public PlayState(GameStateManager gsm) {
    super(gsm);

    obj = new Objects();
    cam.setToOrtho(false, Game.WIDTH , Game.HEIGHT);       

}
@Override
public void update(float dt) {
    obj.update(dt);
}

我有一个Objects类

public class Objects {
    private Vector2 posObj;
    private static final int MOVEMENT = 2;
    private Vector2 velo;
    private Texture objTx;
    private Random rand;

    private static final int FLUCTUATION = 400;

    public Objects(){

        objTX = new Texture("objies.png");
        rand = new Random();

        posObj = new Vector2(rand.nextInt(FLUCTUATION),rand.nextInt(FLUCTUATION));           

        velo = new Vector2(0, 0);

        }

public void update(float dt){

}

现在,我要做的是:  将此随机生成的对象移动到屏幕中心,然后进行处置。  需要严肃的帮助!感谢您

1 个答案:

答案 0 :(得分:1)

嗯,你知道你的对象在哪里,你知道中间的位置(Game.WIDTH / 2,Game.HEIGHT / 2)

如果中心位于对象的左侧,则向左移动,如果中心位于上方,则移动对象等。

这是一个非常简单的解决方案:

public void update(float delta){

    if(posObj.x < Game.WIDTH/2){
        velocity.x = MOVEMENT;
    }
    else {
        velocity.x = -MOVEMENT;
    }

    if(posObj.y < Game.HEIGHT/2){
        velocity.y = MOVEMENT;
    }
    else {
        velocity.y = -MOVEMENT;
    }

    posObj.y += velocity.y * delta;
    posObj.x += velocity.x * delta;

}

这可能会导致您的物体在中间跳跃而没有真正击中确切的坐标。因此,您可以通过将此方法添加到对象来检查从对象到中间的距离:

public Vector2d getPosition(){
    return posObj;
}

然后检查距离:

if( obj.dst(Game.WIDTH , Game.HEIGHT) <= closeEnough ){
    obj = new Objects(); 
}

closeEnough是你设定的距离。