我在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)中按下按钮就可以让玩家保持跳跃状态
请帮忙。