簡體   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