libGDX与纹理和ShapeRenderer冲突

时间:2014-11-12 11:02:30

标签: java android libgdx

我的碰撞有点问题。我有一个带有两个圆圈的狗对象,一个用于他的头部,另一个用于他的肥胖身体,还有一个圆圈代表一个球状纹理,与狗的圆圈(它碰到的第一个)碰撞。 现在,所有圆圈都比代表它们的纹理大一些。 当我用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();
            }

0 个答案:

没有答案