java - Box2D 多边形体不旋转

标签 java libgdx box2d

我正在尝试使用“libGDX”和“Box2D”创建游戏。 我在游戏中有多个形状,因此我创建了一个 BodyFactory 类,它使用 PolygonShape

创建我的 body

问题是,当我使用 Shape.setAsBox() 方法创建主体时,一切正常,但是当我使用 PolygonShape.set(vertices) 创建主体时>,物体的位置如我所愿地改变,但它们根本不会旋转。

这就是我从天上掉下 3 个物体时得到的结果(稳定后):

enter image description here 正方形会旋转并停留在地面上,但其他形状不会。

另请注意,我尝试添加

body.setFixedRotation(false);

我的代码,但没有任何改变。

形状的摩擦力、质量和密度也处于合理的范围内。

这是我的代码的一部分,它从文件创建“PolygonShape”:

...
Body body = world.createBody(bodyDef);
...
for (int i = 0; i < bodyConf.meshData.length; i++) {
    PolygonShape polygonShape = new PolygonShape();
    polygonShape.set(bodyConf.meshData[i]);
    fixtureDef.shape = polygonShape;
    body.createFixture(fixtureDef);
    polygonShape.dispose();
}

最佳答案

我认为问题在于您只创建了一个 Body 并附加了三个 Fixture .

您真正想要的是三个 Body,每个主体上附加一个 Fixture。这样,每个物体都可以独立于其他物体旋转。

for (int i = 0; i < bodyConf.meshData.length; i++) {
    BodyDef bodyDef = ...;
    Body body = world.createBody(bodyDef);
    PolygonShape polygonShape = new PolygonShape();
    polygonShape.set(bodyConf.meshData[i]);
    fixtureDef.shape = polygonShape;
    body.createFixture(fixtureDef);
    polygonShape.dispose();
}

关于java - Box2D 多边形体不旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30152358/

相关文章:

java - 防止 body 在 Box2D 中旋转

java - 在LifecycleObserver中调用mainActivity的方法

java - Libgdx Box2D Velocity 不够快

java - Volley - 无法解析构造函数“JSONObjectRequest

java - Libgdx map 更改

gwt - 在具有 GWT 支持的 IntelliJ Idea 中设置 libgdx?

java - 如何使 View 以 body 为中心并增加Y?

box2d,不能互相插入的动态物体

java - AppenderSkeleton (Log4j2)

java - name 属性似乎在 Field 中不起作用