如何跳跃和滑动游戏角色? libgdx Android Studio

时间:2019-01-07 00:21:45

标签: android libgdx

当屏幕上的手指向上时,播放器将跳跃,而当屏幕上的手指向下时,播放器将滑动。我该怎么办?

///////////////////////////////////////////////// ///////////////////////////////////////////////////// /////////////////////////

对不起,我的英语很差:(

请帮助我

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();
    }
}

1 个答案:

答案 0 :(得分:0)

-您应该共享跳跃,滑动等代码。它可以以一百万种方式完成,没有上下文我们就不可能给您任何建议。--

编辑:

 if(Gdx.input.isTouched()){
 jump();
 }
 else {
 sliding();
 }

可以工作,但是当我查看跳转部分时:

  if (Gdx.input.justTouched() && manY <= 60) {
        velocity = -8;
    }

我看到这条线是完全错误的,因为您已经通过触摸调用了跳转功能。另外,我在您的代码中看到不一致的代码段,它们使您难以理解您的意图。您的逻辑中有多个错误。在尝试执行此操作之前,请考虑执行更轻松的任务。

此外,您还需要安排跳跃时间。这样,您的角色将跳入太空。您可以这样写:

if(!onAir){
jump();
}

onAir是当char触地时将设置为false的布尔值。