看起来好像您没有在任何地方使用fixtureDef 对象。创建主体后,您应该将其设置为主体。
创建运动体的方式与静态体没有太大区别。唯一的区别是如何定义 BodyDef 的类型。
创建运动体
它也可以是 StaticBody 或 DynamicBody。取决于您想要完成什么。
BodyDef tempBodyDef = new BodyDef();
tempBodyDef.type = BodyType.KinematicBody;
创建 FixtureDefinition(描述夹具属性的定义)
还要创建一个形状并将其分配给夹具。
您可以修改 tempFD 的 firction、isSensor 等属性来获得您想要的结果。
FixtureDef tempFD = new FixtureDef();
PolygonShape tempShape = new PolygonShape();
tempFD.shape = tempShape;
身体形状的中心位于 0,0
Vector2 tempVector = new Vector2();
tempVector.x = 0;
tempVector.y = 0;
设置身体形状的大小和位置。
请注意,我使用了宽度和高度的一半,因为这是 setAsBox 函数所需要的。
tempShape.setAsBox(myWidth/2f, myHeight/2f, tempVector, myAngle);
tempBodyDef.position.set(myXPosition, myYPosition);
创建主体并为其分配夹具
Body testBody = world.createBody(tempBodyDef);
testBody.createFixture(tempFD);
使用完形状后,不要忘记将其丢弃。
tempShape.dispose();
你就完成了。