性格永远不会停止走路

Ric*_*ban 6 android andengine

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

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;
    }
  }
}
}
Run Code Online (Sandbox Code Playgroud)

我想要的是每当他的位置X等于触摸区域X时停止玩家走路.问题是它永远不会停止走路.谢谢!

Doo*_*ght 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;
   }
Run Code Online (Sandbox Code Playgroud)


小智 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
}
Run Code Online (Sandbox Code Playgroud)