繁体   English   中英

LibGDX-加速度计问题

[英]LibGDX - Accelerometer Problems

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

  1. 当我碰到一个物体时,我的战斗机应该掉到地上。 但是,由于有了加速度计,即使它死了,我仍然可以上下移动它。 尽管x轴上的滚动条停止了。 问题:(已修复)在被Ive击打后,我如何才能使加速度计停止运动,并使战斗机加速至地面(在没有加速度计的情况下,仅靠加速度计)?

  2. 当我上下移动战斗机时,从“向上移动”到“向下移动”的过渡并不顺利。 好像迟钝了。 问题:如何增加加速度计的灵敏度?

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

您需要包装加速器。 与Alive变量一起使用

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

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

对于第二季度

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所需要的)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM