2017-02-28 70 views
0

我不知道這段代碼有什麼問題。當精靈到達右端角落時,它應該在左邊移動。但是這個代碼在它(精靈)到達右端角時會執行,精靈停止。Android libgdx ...水平來回移動精靈

的startM是左端的角落,和ENDM是右端角落

//in constructor 
position = new Vector2(ShootingTreys.WIDTH*0.48f, ShootingTreys.HEIGHT*0.025f); 

    // in update 
delta = Gdx.graphics.getDeltaTime(); 
if(ps.touch == false){ 

     if(leftEnd == false && (startM <= ballMeter.getX())){ 
      position.x = ballMeter.getX(); 
      position.x += 20 *delta; 

      if(endM == ballMeter.getX()){ 
       leftEnd =true; 
      } 
     } 
     else { 
      position.x = ballMeter.getX(); 
      position.x -= 20 *delta; 

      if(startM == ballMeter.getX()){ 
       leftEnd = false; 
      } 
     } 

     ballMeter.setPosition(position.x , ballMeter.getY()); 

回答

1

請在您的代碼小的變化。

if(endM == ballMeter.getX()){ 
     leftEnd =true; 
} 

轉換爲

if(endM <= ballMeter.getX()){ 
     leftEnd =true; 
} 

而且

if(startM == ballMeter.getX()){ 
    leftEnd = false; 
} 

if(startM >= ballMeter.getX()){ 
     leftEnd = false; 
} 
+0

非常感謝,當它到達右端角落時,它就會離開。但是當它到達左端角時,精靈停止。我如何讓精靈再次向右走。 –

+0

我還沒有試過你的代碼,可能是if(leftEnd == false ||(startM <= ballMeter.getX()))可以替換爲if(!leftEnd),你爲什麼要比較布爾if if(b = = true)而不是僅僅使用if(b)和if(b == false)寫if(!b)。 – Aryan

0

謝謝@AbhishekAryan

 if(leftEnd == false || (startM <= ballMeter.getX())) { 
      position.x = ballMeter.getX(); 
      position.x += 20 * delta; 

      if(endM <= ballMeter.getX()){ 
       leftEnd =true; 
      } 
     } 
     if(leftEnd) { 
       position.x = ballMeter.getX(); 
       position.x -= 20 * delta; 

      if(startM >= ballMeter.getX()){ 
       leftEnd = false; 
      } 
      } 

     ballMeter.setPosition(position.x , ballMeter.getY());