【问题标题】:LibGDX - Accelerometer ProblemsLibGDX - 加速度计问题
【发布时间】:2014-10-10 16:55:20
【问题描述】:

我遇到了一些问题。我正在使用 LibGDX。

  1. 当我击中一个物体时,我的 Fighter 应该会掉到地上。但是,由于加速度计,即使它死了,我仍然可以上下移动它。 x 轴上的滚动条虽然停止了。 问题:(已修复)如何让加速度计在我被击中后停止,并使战斗机加速到地面(在没有加速度计的情况下,完全由它自己)?

  2. 当我上下移动 Fighter 时,从“上移”到“下移”的过渡并不顺畅。好像落后了 问题:如何提高加速度计的灵敏度?

  3. 另外,当我进一步倾斜手机时,速度保持不变。 问题:相对于倾斜度,我怎样才能增加速度?

谢谢!

代码如下:

加速度计代码:

       float accelY = Gdx.input.getAccelerometerY();



      if (Gdx.input.getAccelerometerY() < 5){
         velocity.y = -40;
      }


      if (Gdx.input.getAccelerometerY() > 5){
         velocity.y = 40;
      }

当战士击中物体并死亡时:

              public void die() {
      isAlive = false;
      velocity.y = 0;
      acceleration.y = 460;
   }

【问题讨论】:

  • 关于第一个问题,只需在您的代码周围放置一个if (isAlive) 块即可更改速度。
  • 是的,它成功了!谢谢!

标签: java eclipse libgdx accelerometer


【解决方案1】:

你需要包装加速。带有 Alive 变量的函数

if(isAlive)
{
    if (Gdx.input.getAccelerometerY() < 5)
    {
        velocity.y = -40;
    }

    if (Gdx.input.getAccelerometerY() > 5)
    {
        velocity.y = 40;
    }
}

【讨论】:

    【解决方案2】:

    对于第二季度,

    if (Gdx.input.getAccelerometerY() < 5){
        velocity.y = -40;
    }
    
    
    if (Gdx.input.getAccelerometerY() > 5){
        velocity.y = 40;
    }
    

    它不平滑的原因是您没有对运动进行插值。 一种解决方法是:

    if (Math.abs(Gdx.input.getAccelerometerY()) > 5){
        YFactor = Gdx.input.getAccelerometerY();
    }
    

    //在你的游戏循环中的某个地方

    if(YFactor >0)
    {
        if(velocity.y) < YFactor*8{ //tweak this value
            velocity.y += YFactor; //tweak this value
        }
    }
    else
    {
        //reverse above logic
    }
    

    它的作用是保持 - 速度或 +,直到 YFactor * 8(这是您的 Q3 需要的)

    这只是概念的介绍,你需要处理变量的范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多