【问题标题】:LibGDX problems with ifLibGDX 的 if 问题
【发布时间】:2017-01-31 07:37:57
【问题描述】:

我的 LibGDX 游戏中有这个 if 语句。问题是我的球员向左看,他向左移动,这是正确的,但如果他向右看,他还是会向左移动。我该如何解决这个问题?

 public boolean keyUp(int keycode) {
        if (keycode == Input.Keys.A &&  player.b2body.getLinearVelocity().x >=-0.5) {
            SpinDashleft();


            return true;
        }
        else   if (keycode == Input.Keys.A &&  player.b2body.getLinearVelocity().x <=0.5) {
            SpinDashright();


            return true;
        }


        return false;
    }
   public void SpinDashleft() {


    player.b2body.applyLinearImpulse(new Vector2(-7.1f, 0), player.b2body.getWorldCenter(),true);

}

public void SpinDashright() {


        player.b2body.applyLinearImpulse(new Vector2(7.00f, 0), player.b2body.getWorldCenter(),true);

}

【问题讨论】:

  • 问题解决了!它需要像这样 public void SpinDash() { if ((player.b2body.getLinearVelocity().x=-0.5 ) && player.region.isFlipX()){ player.b2body.applyLinearImpulse(new Vector2(-0.9f, 0), player.b2body.getWorldCenter (),真的); } }
  • 您正在使用纹理区域(资产)来存储玩家状态?我建议你避免这样做——这是意大利面条代码。
  • 我现在不太擅长它并使用教程,所以这就是我的代码这样的原因。
  • 没关系,只是一个建议。先学习基础知识,然后再阅读良好做法。

标签: java android-studio if-statement libgdx


【解决方案1】:

0.5 是干什么用的?检查最低速度?如果是这样,您可能在那儿弄错了标志。

    if (keycode == Input.Keys.A) {
      if (player.b2body.getLinearVelocity().x >= 0.5) {
        SpinDashleft();
        return true;
      }
      if (player.b2body.getLinearVelocity().x <= -0.5) {
        SpinDashright();
        return true;
      }
    }

【讨论】:

  • 是的。我试图改变它们,但这并没有解决我的问题,只是改变了olayer移动的方向。
  • 如果你只使用 0 会发生什么?
  • 如果我使用它 - 玩家根本不会移动。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
  • 2012-08-24
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多