如何制作一个"保持按钮"在libgdx?

时间:2015-01-05 22:19:55

标签: java android libgdx box2d game-physics

我在libgdx中开发了一款Android游戏,我首先将其作为桌面应用程序运行,并且运行得很好。 在游戏中,如果你按下飞行按钮,就会对角色施加一个强制,如下所示:

player.getBody().applyForceToCenter(0,70f,true);

因此只要按下按钮,角色就会飞起来。

这是我使用键盘输入的代码:

 if(MyInput.isPressed(MyInput.BUTTON1)){
        player.stopMove();
            //if(myContactListener.isPlayerOnGround()){
        player.moveUp();
        isPressed = true;
            //  }
    }

public class MyInput {

public static boolean[] keys;
public static boolean[] pkeys;
public static final int NUM_KEYS = 1;
public static final int BUTTON1 = 0;



static{
    keys = new boolean[NUM_KEYS];
    pkeys = new boolean[NUM_KEYS];
}
public static void update(){
    for(int i = 0;i<NUM_KEYS;i++){
        pkeys[i] = keys[i];
    }
}
public static void setKey(int i,boolean b){keys[i] = b;}
public static boolean isPressed(int i){return keys[i] && pkeys[i];}

}

public class MyInputPocessor implements InputProcessor {
@Override
public boolean keyDown(int k){
    if(k == Input.Keys.UP){
        MyInput.setKey(MyInput.BUTTON1,true);
    }
    return false;
}
@Override
public boolean keyUp(int k){
    if(k == Input.Keys.UP){
        MyInput.setKey(MyInput.BUTTON1,false);
    }
    return false;
}

当我使用键盘时,这段代码运行得很好,但现在我试图在我的Android手机上运行游戏,所以我创建了一个按钮:

button.addListener(new InputListener() {
        public boolean touchDown(InputEvent event, float x, float y,
                                 int pointer, int button) {
            player.getBody().applyForceToCenter(0,70f,true);
            return true;
        }
        public void touchUp(InputEvent event, float x, float y,
                            int pointer, int button) {
            player.setState(STANDING);
        }
    });

但是有了这个听众,我只能让玩家每次点击都会跳跃,而不是在按下按钮时继续跳跃。

简而言之,

我如何实现一个按钮监听器,只要在libgdx(BOX2D)中按下按钮就可以让玩家保持跳跃状态

请帮忙。

0 个答案:

没有答案