繁体   English   中英

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

[英]how to move randomly generated object to the center of the screen in android Using 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);
}

我有一个对象类

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){

}

现在,我要做的是:将这个随机生成的对象移动到屏幕的中心,然后处理。 需要认真的帮助! 谢谢

好吧,你知道你的对象在哪里,你知道中间在哪里(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 是您设置的距离。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM