java - 有人可以解释一下吗? (运动无法正常工作)

标签 java libgdx

我在我的游戏中添加了一个东西,这样当你按空格键时,你会得到一个小的速度提升。然而,只有当您使用 WASD 键时它才能正常工作。如果按向上、向左或向下、向右箭头键,则增强将不起作用,但否则会起作用。谁能解释一下为什么这样做?

代码如下:

    boostTimer += Gdx.graphics.getDeltaTime();

    if(boostTimer > 3){
    snailBoost = 0;
    boostTimer = 0;
    }

    //movement
    if(Gdx.input.isKeyPressed(Keys.LEFT) || Gdx.input.isKeyPressed(Keys.A)){

        if(Gdx.input.isKeyPressed(Keys.SPACE) && snailBoost < 20){
            snailBoost++;
            snail.getBounds().x -= (snailSpeed + 100) * delta;
        }

        //flips the sprite
        snail.getSprite().setFlip(false, true);
        snail.getBounds().x -= snailSpeed * delta;

        //handles what happens when you go outside the game world
        if(snail.getBounds().x < -100)snail.getBounds().x = 1920;
    }

    if(Gdx.input.isKeyPressed(Keys.RIGHT) || Gdx.input.isKeyPressed(Keys.D)){

        if(Gdx.input.isKeyPressed(Keys.SPACE) && snailBoost < 20){
            snailBoost++;
            snail.getBounds().x += (snailSpeed + 100) * delta;
        }

        snail.getSprite().setFlip(true, true);
        snail.getBounds().x += snailSpeed * delta;

        if(snail.getBounds().x > 2020)snail.getBounds().x = -100;
    }

    if(Gdx.input.isKeyPressed(Keys.UP) || Gdx.input.isKeyPressed(Keys.W)){

        if(Gdx.input.isKeyPressed(Keys.SPACE) && snailBoost < 20){
            snailBoost++;
            snail.getBounds().y -= (snailSpeed + 100) * delta;
        }

        snail.getBounds().y -= snailSpeed * delta;

        if(snail.getBounds().y < -100)snail.getBounds().y = 1080;
    }

    if(Gdx.input.isKeyPressed(Keys.DOWN) || Gdx.input.isKeyPressed(Keys.S)){

        if(Gdx.input.isKeyPressed(Keys.SPACE) && snailBoost < 20){
            snailBoost++;
            snail.getBounds().y += (snailSpeed + 100) * delta;
        }

        snail.getBounds().y += snailSpeed * delta;

        if(snail.getBounds().y > 1080)snail.getBounds().y = -100;
    }

抱歉,代码困惑。 :P 对于游戏开发来说还是个新手。

最佳答案

廉价键盘共享按键的控制线,因此某些组合键无法正确注册,并且尝试同时按下 3-4 个以上的按键将导致任何结果。

要么购买更昂贵的键盘,要么选择可以使用的按键(例如您已经注意到的著名的 WASD)。与代码无关。

关于java - 有人可以解释一下吗? (运动无法正常工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36647044/

相关文章:

java - Eclipse 执行速度比另一台电脑慢

jvm - Java程序执行背后的内部过程

java - 尝试在 android 5.0 上使用 RecyclerView 时应用程序崩溃

java - 用于创建和更新时间戳的触发器与 JPA @PrePersist 的优缺点

java - libgdx:使用相机测试对象是否超出屏幕

android - 错误 ':android:transformKotlinClassesWithJillForDebug' 。在构建用 Kotlin + LibGDX 编写的 Android 应用程序时

java - 如何从 Blank Constructor 绘制 LibGDX Sprite

java - 用方括号分割字符串

java - LibGDX 游戏 : Check if button is touched when touchDown is called

java.lang.NoClassDefFoundError : org. apache.batik.dom.svg.SVGDOMImplementation