2016-05-09 3 views
1

私はこれまでにベロシティを逆転しようとしています。理論的には戻ってくるべきですが、そうではありません。AndroidのgameViewの端からスプライトを跳ね返す方法を教えてください。

public void update() { 
    if (x > gameView.getWidth() - bmp_width - xSpeed){ 
     xSpeed = xSpeed * -1; 
     ySpeed = ySpeed * -1; 
    } 
    if (y > gameView.getHeight() - bmp_height - ySpeed){ 
     xSpeed = xSpeed * -1;; 
     ySpeed = ySpeed * -1;; 
    } 
    if(x + xSpeed < 0){ 
     x = 0; 
     xSpeed = 0; 
     ySpeed = -5; 
    } 

    if(y + ySpeed < 0){ 
     y = 0; 
     xSpeed = 5; 
     ySpeed = 0; 
    } 
    x = x + xSpeed; 
    y = y + ySpeed; 
} 

ありがとうございます!

+0

ありがとう、あなたは –

答えて

0

はこのような何かしてみてください:

public void update() { 
    x += xSpeed; 
    y += ySpeed; 

    if (x >= gameView.getWidth() - bmp_width){ 
     xSpeed = -xSpeed; 
     x = gameView.getWidth() - bmp_width; 
    }else if(x <= 0){ 
     xSpeed = -xSpeed; 
     x = 0; 
    } 
    if (y >= gameView.getHeight() - bmp_height){ 
     ySpeed = -ySpeed; 
     y = gameView.getHeight() - bmp_height; 
    }else if(y <= 0){ 
     ySpeed = -ySpeed; 
     y = 0; 
    } 
} 
+0

だから、近いあなたのエラーを見つけることができるはず、独自のコードをコメントしようとすると、それぞれの行が何をすべきかと言うと、スプライトはまだ上の画面を終了しますx軸は表示されますが、gameView.getWidth()が正しい値を返すかどうかチェックしたのはなぜですか? – RyanH898

+0

のy軸と同じコードなのです。 –

+0

- それを変更する場所も分かりません。ゲームの幅(肖像)は高さよりも大きいので、間違っていると思う – RyanH898

関連する問題