Java libGDX与纹理和ShaperEnder的碰撞
我的碰撞有点问题。我有一个狗的物体,有两个圆圈,一个是他的头,另一个是他的胖身体,还有一个圆圈代表一个球的纹理,它与狗的圆圈(它接触的第一个圆圈)碰撞。 现在,所有的圆都比代表它们的纹理大一点。 当我使用SpriteBatch绘制它们时,似乎纹理在碰撞影响发生之前在彼此内部移动,但当我使用ShaperEnder仅绘制圆时,碰撞影响发生在圆碰撞\碰撞的那一刻。 为什么SpriteBatch和ShaperEnder之间有差异 编辑我的代码: 狗圈:Java libGDX与纹理和ShaperEnder的碰撞,java,android,libgdx,Java,Android,Libgdx,我的碰撞有点问题。我有一个狗的物体,有两个圆圈,一个是他的头,另一个是他的胖身体,还有一个圆圈代表一个球的纹理,它与狗的圆圈(它接触的第一个圆圈)碰撞。 现在,所有的圆都比代表它们的纹理大一点。 当我使用SpriteBatch绘制它们时,似乎纹理在碰撞影响发生之前在彼此内部移动,但当我使用ShaperEnder仅绘制圆时,碰撞影响发生在圆碰撞\碰撞的那一刻。 为什么SpriteBatch和ShaperEnder之间有差异 编辑我的代码: 狗圈: boundingCircleHead.se
boundingCircleHead.set(position.x + 9.5f, position.y + 6, 6.5f);
boundingCircleBody.set(position.x + 9.5f, position.y + 16, 6.5f);
球的圆:
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();
}
您需要向我们展示最重要的代码部分:碰撞检测(似乎有效)和带有S
haperender
和SpriteBatch
的图形。我猜你只是用一个错误的位置/大小绘制了精灵,而你正在用形状渲染器使用rigth size。好的,编辑并添加我的代码。首先:我记得你不应该一次激活2个渲染器。因此,首先,使用batcher
调用batcher.end()
,然后使用shaperender
调用draw()
。问题可能是,你给的shaperender#circle()
的位置是圆的中心(不确定),而SpriteBatch
sdraw()
的位置是左下角。我尝试了一些东西后删除了我的预览评论,多亏你解释了SB和SR是如何绘制的,我才明白。谢谢因此,shaperender#circle
使用中心点,而SpriteBatch
使用左下角?