Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java libGDX与纹理和ShaperEnder的碰撞_Java_Android_Libgdx - Fatal编程技术网

Java libGDX与纹理和ShaperEnder的碰撞

Java libGDX与纹理和ShaperEnder的碰撞,java,android,libgdx,Java,Android,Libgdx,我的碰撞有点问题。我有一个狗的物体,有两个圆圈,一个是他的头,另一个是他的胖身体,还有一个圆圈代表一个球的纹理,它与狗的圆圈(它接触的第一个圆圈)碰撞。 现在,所有的圆都比代表它们的纹理大一点。 当我使用SpriteBatch绘制它们时,似乎纹理在碰撞影响发生之前在彼此内部移动,但当我使用ShaperEnder仅绘制圆时,碰撞影响发生在圆碰撞\碰撞的那一刻。 为什么SpriteBatch和ShaperEnder之间有差异 编辑我的代码: 狗圈: boundingCircleHead.se

我的碰撞有点问题。我有一个狗的物体,有两个圆圈,一个是他的头,另一个是他的胖身体,还有一个圆圈代表一个球的纹理,它与狗的圆圈(它接触的第一个圆圈)碰撞。 现在,所有的圆都比代表它们的纹理大一点。 当我使用SpriteBatch绘制它们时,似乎纹理在碰撞影响发生之前在彼此内部移动,但当我使用ShaperEnder仅绘制圆时,碰撞影响发生在圆碰撞\碰撞的那一刻。 为什么SpriteBatch和ShaperEnder之间有差异

编辑我的代码: 狗圈:

    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
s
draw()
的位置是左下角。我尝试了一些东西后删除了我的预览评论,多亏你解释了SB和SR是如何绘制的,我才明白。谢谢因此,
shaperender#circle
使用中心点,而
SpriteBatch
使用左下角?