2013-01-27 7 views
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.問題は歩くのが止まらないということです。ありがとう!

+0

は、あなたはそれが間違ってどこに行くか見るためにあなたのコードをデバッグしようとしましたか?してみてください – Egor

答えて

0

この1

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

ifステートメントにdestX == stanXの要素がありません。もしあなたが本当にelseを使うべきです。下記の変更されたコードを見てください。

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

それは私の問題の一つです。 TouchXとStanXは一度も平等ではありません。私はデバッグのためにlogcatを見てみましたが、代わりに7の間隔が表示されます。 Like: StanX:24 TouchX:30 StanX:31 TouchX:30 StanX:38 TouchX:30 –

+0

@NobodyWantsToしたがって、StanXは一度に1つではなく複数の倍数で増やしています。その場合は、if文を変更して範囲を確認してください。変更されたコードを見てください。 – Doomsknight

+0

Woops、それは間違った方法を得た..今見てください。基本的にtouchXの8(またはこれまでに値する)の範囲内で確認してください。正確には同等ではなく – Doomsknight

関連する問題