我是初学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){
}
现在,我要做的是: 将此随机生成的对象移动到屏幕中心,然后进行处置。 需要严肃的帮助!感谢您
答案 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是你设定的距离。