【问题标题】:Box2d in Andengine - attaching child bodies - is it possibleAndengine中的Box2d - 附加儿童身体 - 是否可能
【发布时间】:2015-03-09 02:13:22
【问题描述】:

我对 Andengine Box2d 扩展有疑问。

我有 2 个矩形:base 和 fuelStation。

fuelStation 是 base 的孩子。当我使用 setTransform 方法旋转 base 时,fuelStation sprite 也在旋转,但 body 保持在相同的位置。

base = new Rectangle(CAMERA_WIDTH / 2, CAMERA_HEIGHT / 2 - 200, 200, 200, vbom);
fuelStation = new Rectangle(base.getWidth() / 2, 0, 500, 10, vbom);

this.attachChild(base);
base.attachChild(fuelStation);

final FixtureDef objectFixtureDef1 = PhysicsFactory.createFixtureDef(1, 0.0f, 0.5f);
final FixtureDef objectFixtureDef2 = PhysicsFactory.createFixtureDef(1, 0.0f, 0.5f);

baseBody = PhysicsFactory.createBoxBody(physicsWorld, base, BodyType.StaticBody, objectFixtureDef1);
baseBody.setUserData("base");

fuelStationBody = PhysicsFactory.createBoxBody(physicsWorld, fuelStation, BodyType.KinematicBody, objectFixtureDef2);
fuelStationBody.setUserData("station");

physicsWorld.registerPhysicsConnector(new PhysicsConnector(base, baseBody, true, true));
// physicsWorld.registerPhysicsConnector(new PhysicsConnector(fuelStation, fuelStationBody,
// true, true));

当我从最后一行删除注释时 - 精灵位置发生变化但仍无法正常工作(身体静止不动)。

这两个身体如何正确连接?

【问题讨论】:

  • 你是如何测试身体不移动而精灵移动的?

标签: android box2d andengine


【解决方案1】:

您必须记住,您对实体(精灵)所做的所有转换只会影响“视觉”内容,换句话说,永远不会影响实体。如果你想影响实体和实体,你只能通过对实体施加力来实现,因为它们与 PhysicsConnector 连接,这些转换将影响实体和精灵(“视觉身体")。
因此,将 fuelStating 作为 base 的子级不会产生任何影响。要影响两个实体,您需要它们之间的“连接”,您可以通过创建一个连接两个实体的关节来实现:http://www.iforce2d.net/b2dtut/joints-overview

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多