我的碰撞有点问题。我有一个带有两个圆圈的狗对象,一个用于他的头部,另一个用于他的肥胖身体,还有一个圆圈代表一个球状纹理,与狗的圆圈(它碰到的第一个)碰撞。 现在,所有圆圈都比代表它们的纹理大一些。 当我用SpriteBatch绘制它们时,看起来纹理在碰撞效果发生之前就会相互移动,但是当我用ShapeRenderer绘制唯一的圆圈时,碰撞效果会在圆圈碰撞\碰撞时发生。 为什么SpriteBatch和ShapeRenderer之间存在差异?
编辑我的代码: 狗的圈子:
boundingCircleHead.set(position.x + 9.5f, position.y + 6, 6.5f);
boundingCircleBody.set(position.x + 9.5f, position.y + 16, 6.5f);
Ball的圈子:
ball.x = MathUtils.random(0, 121);
ball.y = -13;
ball.radius = 11f;
抽球:
batcher.draw(BALL, ball.x, ball.y, 17, 19);
shapeRenderer.circle(ball.x, ball.y, ball.radius);
画狗:
batcher.draw(dogAnimation.getKeyFrame(runTime), dog.getX(), dog.getY(), dog.getWidth(), dog.getHeight());
shapeRenderer.circle(dog.getBoundingCircleHead().x, dog.getBoundingCircleHead().y, dog.getBoundingCircleHead().radius);
shapeRenderer.circle(dog.getBoundingCircleBody().x, dog.getBoundingCircleBody().y, dog.getBoundingCircleBody().radius);
碰撞:
if (Intersector.overlaps(ball, dog.getBoundingCircleHead()) || Intersector.overlaps(ball, dog.getBoundingCircleBody())) {
gameOver();
}