2016-06-20 22 views
0

プログラムが画像と画面のエッジとの衝突を検出しましたが、衝突後に画像をドラッグできません。私は何を変えるので、まだ画像をドラッグすることができ、画像を画面の端から外に出させられませんでしたか?衝突検出(LibGDX)

のGIFの例は、私が作っ:

https://s31.postimg.org/f60hh3z2z/Animation.gifは内部

batch.begin(); 
batch.draw(texture, spritePosition.x, spritePosition.y); 
batch.end(); 

if (Gdx.input.isTouched() && isNotColliding()) { 

     camera.unproject(spritePosition.set(Gdx.input.getX() - texture.getWidth()/2, Gdx.input.getY() + texture.getHeight()/2, 0)); 

} 


textureBounds.set(spritePosition.x, spritePosition.y, texture.getWidth(), texture.getHeight()); 

をレンダリングします。

private boolean isNotColliding(){ 
    return screenBounds.contains(textureBounds); 
} 

答えて

1

スプライトの位置は、左下隅です。この位置は、スプライトがエッジと衝突しているかどうかを確認するために使用します。

フレーム内でスプライトを1ピクセル以上動かすことができるため、スプライトのx位置を負にすることができます。 spritePosition.x == -1の場合、スプライトがきれいに見えますが、最初のピクセル行は画面外になります。

spritePosition.xが< 0 isNotColliding(ある場合は、あなたがスプライトを移動することができない理由はもうお使いの場合

(Gdx.input.isTouched() && isNotColliding()) { 

のbecouseある)が真となります。

移動するスプライトを使用しないで、スクリーンの内部に留まらせてください。

if(spritePosition.x < 0){ 
    spritePosition.x = 0; 
}