我有一个圆形的动态身体,我需要在比赛期间调整它(它看起来像一个点,然后它变成一个圆圈,之后它开始移动)。我该怎么办? 我有一个想法 - 它是使用一些动画(圆圈具有相同的半径,但由于动画看起来像圆圈增长),但我不确定它是否正确。 (除了我不知道如何实现它)
答案 0 :(得分:2)
对于缩放圆,如果你正在使用精灵,只需缩放 sprite.setScale(float),如果你的精灵附加到Box2d圆形,那么得到Body的形状并设置半径
Shape shape = body.getFixture().getShape;
shape.setRadius(radiusValue);
如果你正在使用ShapeRenderer,只需乘以ShapeRenderer的点。
答案 1 :(得分:2)
我认为你在谈论Box2D的身体。
使用Box2D无法更改圆形夹具。 Box2D是刚性身体模拟器。您需要做的是销毁夹具并用更小/更大的圆形版本替换它。但是这会导致很多问题,因为例如,当仍有接触时你不能销毁固定装置。
最好保持圆圈的大小相同,只需用顶部纹理动画模拟大小的变化。
如果你无法模拟,那么可以尝试以下方法:让不同大小的圆圈的几个版本保持在彼此的顶部。实现一个ContactFilter,它只会导致当前“活动”的一个圆圈的联系人。
答案 2 :(得分:1)
在任何带有box2d的Object类中,我使用以下内容进行动态调整大小:
public void resize(float newradius) {
this.body.destroyFixture(this.fixture);
fixtureDef.density = (float) (this.mass/(Math.PI*newradius*newradius));
this.radius = newradius;
CircleShape circle = new CircleShape();
circle.setRadius(newradius);
this.fixtureDef.shape = circle;
circle.dispose();
this.fixture = body.createFixture(fixtureDef);
this.fixture.setUserData(this);
}
您还可以看到以下主题:How to change size after it has been created