当屏幕上的手指向上时,播放器将跳跃,而当屏幕上的手指向下时,播放器将滑动。我该怎么办?
///////////////////////////////////////////////// ///////////////////////////////////////////////////// /////////////////////////
对不起,我的英语很差:(
请帮助我
public class JumpingBoy extends ApplicationAdapter {
SpriteBatch batch;
Texture mSkyBackground;
Texture mGround;
Texture[] mGameHero;
int manState = 0;
int pause = 0;
float gravity = 0.2f;
float velocity = 0;
int manY;
boolean mWhenJump = true;
boolean slide = true;
@Override
public void create () {
batch = new SpriteBatch();
mSkyBackground = new Texture("sky.png");
mGround = new Texture("ground.png");
mGameHero = new Texture[4];
mGameHero[0] = new Texture("frame-1.png");
mGameHero[1] = new Texture("frame-2.png");
mGameHero[2] = new Texture("jump-up.png");
mGameHero[3] = new Texture("sliding.png");
manY = 60;
}
public void jump() {
if (Gdx.input.justTouched() && manY <= 60) {
velocity = -8;
}
velocity += gravity;
manY -= velocity;
if (manY > 60) {
manState = 2;
mWhenJump = false;
} else {
mWhenJump = true;
}
if (manY <= 60) {
manY = 60;
}
}
public void sliding() {
/*if (Gdx.input.) {
manState = 3;
slide = false;
} else {
slide = true;
}*/
}
@Override
public void render () {
batch.begin();
batch.draw(mSkyBackground, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
batch.draw(mGround, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
if (pause < 15 && mWhenJump) {
pause++;
} else {
pause = 0;
if (manState < 1) {
manState++;
} else {
manState = 0;
}
}
jump();
sliding();
batch.draw(mGameHero[manState], 50, manY);
batch.end();
}
}
答案 0 :(得分:0)
-您应该共享跳跃,滑动等代码。它可以以一百万种方式完成,没有上下文我们就不可能给您任何建议。--
编辑:
if(Gdx.input.isTouched()){
jump();
}
else {
sliding();
}
可以工作,但是当我查看跳转部分时:
if (Gdx.input.justTouched() && manY <= 60) {
velocity = -8;
}
我看到这条线是完全错误的,因为您已经通过触摸调用了跳转功能。另外,我在您的代码中看到不一致的代码段,它们使您难以理解您的意图。您的逻辑中有多个错误。在尝试执行此操作之前,请考虑执行更轻松的任务。
此外,您还需要安排跳跃时间。这样,您的角色将跳入太空。您可以这样写:
if(!onAir){
jump();
}
onAir是当char触地时将设置为false的布尔值。