6

andendgineを使用するゲームを作成しています。コードは次のとおりです。

Player stanley = new Player();
...

scene.registerUpdateHandler(new IUpdateHandler() {
  public void onUpdate(float pSecondsElapsed) {

  stanX = stanley.getX();
  destX = x.getX();

  if(destX < stanX){ 
    if(hasMovedRight == 1){
      stanley.stop();
      hasMovedRight = 0;
    }
    else{
      stanley.moveLeft();
      hasMovedRight = 0
      hasMovedLeft = 1;
    }
  }

  if(destX > stanX){   
    if(hasMovedLeft == 1){
       stanley.stop();
       hasMovedLeft == 0;
    }   
    else{
      stanley.moveRight();
      hasMovedLeft = 0;
      hasMovedRight = 1;
    }
  }
}
}

私が欲しいのは、プレーヤーの位置Xがタッチされた領域Xと等しいときはいつでも、プレーヤーの歩行を停止することです。問題は、歩行が停止しないことです。ありがとう!

4

2 に答える 2

5

if ステートメントに、destX == stanX の要素がありません。本当にelse ifを使用する必要があります。以下の変更されたコードを参照してください。

  if(destX + 8 < stanX){ 
    if(hasMovedRight == 1){
      stanley.stop();
      hasMovedRight = 0;
    }
    else{
      stanley.moveLeft();
      hasMovedRight = 0
      hasMovedLeft = 1;
    }
  }
  else if(destX - 8 > stanX){   
    if(hasMovedLeft == 1){
       stanley.stop();
       hasMovedLeft == 0;
    }   
    else{
      stanley.moveRight();
      hasMovedLeft = 0;
      hasMovedRight = 1;
    }
  }
  else //makes stanley stop. (calls stop method), if at touched x.
  {
      stanley.stop();
      hasMovedRight = 0;
      hasMovedLeft = 0;
   }
于 2013-01-27T09:53:01.977 に答える