性格永远不会停止走路

时间:2013-01-27 09:14:39

标签: android andengine

我正在创建一个使用动词的游戏,这是我的代码:

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时停止玩家行走。问题是它永远不会停止行走。谢谢!

2 个答案:

答案 0 :(得分:5)

你的if语句缺少destX == stanX的元素。你应该真的使用其他如果。请参阅下面的修改代码。

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

答案 1 :(得分:0)

尝试这个

setOnSceneTouchListener(new IOnSceneTouchListener() {
@Override
    public boolean onSceneTouchEvent(Scene scene, TouchEvent event) {
    int touchX = (int) (event.getX() - (sCHARStanley.getWidth() / 2)); 

    //so that your sprite will go to the touched part of the screen
}