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 回答
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
}
于 2013-12-19T02:41:10.673 回答