碰撞检测(LibGDX)
Collision detection (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);
}
精灵的位置是左下角。这个位置是你用来检查精灵是否与边缘碰撞的位置。
因为您可以在一帧中将 sprite 移动超过 1 个像素,所以您可以将 sprite x 位置设置为负值。如果 spritePosition.x == -1 你将能够很好地看到精灵,但像素的第一行将在屏幕之外。
你不能再移动精灵的原因是你的 if
(Gdx.input.isTouched() && isNotColliding()) {
当 spritePosition.x < 0 isNotColliding() 为真。
不要让精灵移动,让它留在屏幕内。
if(spritePosition.x < 0){
spritePosition.x = 0;
}
我的程序检测到图像与屏幕边缘之间的碰撞,但碰撞后我无法拖动图像。我要更改什么才能使图像仍然能够四处拖动并且不让图像超出屏幕边缘?
我做的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);
}
精灵的位置是左下角。这个位置是你用来检查精灵是否与边缘碰撞的位置。
因为您可以在一帧中将 sprite 移动超过 1 个像素,所以您可以将 sprite x 位置设置为负值。如果 spritePosition.x == -1 你将能够很好地看到精灵,但像素的第一行将在屏幕之外。
你不能再移动精灵的原因是你的 if
(Gdx.input.isTouched() && isNotColliding()) {
当 spritePosition.x < 0 isNotColliding() 为真。
不要让精灵移动,让它留在屏幕内。
if(spritePosition.x < 0){
spritePosition.x = 0;
}