Dynamic 主体的动态大小调整(LibGDX)

Dynamic 主体的动态大小调整(LibGDX),dynamic,resize,libgdx,Dynamic,Resize,Libgdx,我有一个圆形的动态身体,我需要在游戏中调整它的大小(它看起来像一个点,然后它变成一个圆,然后它开始移动)。我该怎么做? 我有一个想法-它是使用一些动画(圆有相同的半径,但由于动画,它看起来像圆增长),但我不确定它是否正确的方式。(此外,我不知道如何实现它)对于缩放圆,如果您使用的是sprite,请缩放它sprite.setScale(float),如果您的sprite连接到Box2d circle shape,则获取实体形状并设置半径 Shape shape = body.getFixture(

我有一个圆形的动态身体,我需要在游戏中调整它的大小(它看起来像一个点,然后它变成一个圆,然后它开始移动)。我该怎么做?
我有一个想法-它是使用一些动画(圆有相同的半径,但由于动画,它看起来像圆增长),但我不确定它是否正确的方式。(此外,我不知道如何实现它)

对于缩放圆,如果您使用的是sprite,请缩放它sprite.setScale(float),如果您的sprite连接到Box2d circle shape,则获取实体形状并设置半径

Shape shape = body.getFixture().getShape;
shape.setRadius(radiusValue);

如果你使用的是ShaperEnder,只需乘以ShaperEnder的点。

我假设你说的是Box2D物体

无法使用Box2D更改圆形夹具。Box2D是一个刚性车身模拟器。你要做的就是破坏这个固定装置,并用一个更小/更大的圆来替换它。但是这会导致很多问题,因为你不能在仍然有触点的情况下破坏夹具

最好保持圆的大小不变,只需在顶部模拟纹理动画的大小变化


如果您无法模拟,那么可以尝试以下方法:使用不同大小的圆圈的多个版本,并使它们彼此重叠。实现一个ContactFilter,它只会导致当前处于“活动”状态的一个圆圈的联系人。

在使用box2d的任何对象类中,我使用以下方法来动态调整大小:

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);
}

您还可以看到以下主题:

您在谈论body时是否使用box2D?也许你可以看看场景2D,它提供了所谓的
动作
,你可以告诉
演员他应该如何随时间变化。还有一些教程介绍如何将其与Box2D一起使用。但是我自己从来没有尝试过,所以这只是一个建议。它不适用于spritehelper。我正在使用cocos2d-x2.2.1。有什么想法吗?