【发布时间】:2014-04-14 18:51:51
【问题描述】:
我正在 Andengine (GLES 2) 中创建我的第一个游戏,并将 Box2D 用于物理。
碰撞检测有效,但似乎没有考虑 png 文件上的 alpha 值(我认为这是正在发生的事情),因为碰撞发生在两个精灵实际接触之前。我不需要碰撞是像素完美的,只是相当准确。
这就是我设置碰撞检测的方式:
final CharacterSprite characterSprite = new CharacterSprite(CAMERA_WIDTH/2, CAMERA_HEIGHT/2, this.mCharacterTextureRegion, this.getVertexBufferObjectManager());
mPhysicsWorld = new FixedStepPhysicsWorld(60, new Vector2(0, 0), false);
scene.registerUpdateHandler(mPhysicsWorld);
playerBody = PhysicsFactory.createBoxBody(mPhysicsWorld, characterSprite, BodyType.DynamicBody, PhysicsFactory.createFixtureDef(0, 0, 0));
playerBody.setUserData("player");
characterSprite.setBody(playerBody);
mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(characterSprite, playerBody, true, true));
mPhysicsWorld.setContactListener(createContactListener());
attachSprites(scene);
谢谢
【问题讨论】:
-
不幸的是,您可能需要剪切精灵以制作更准确的框。我对 AndEngine 并没有搞砸太多,但是如果他们检测到包含 alpha 值的冲突,那么你无能为力。你的背景是透明的吗?
-
函数“createBoxBody”应该是一个线索,你正在创建的body是一个矩形,与像素或png文件完全没有关系。尝试渲染“调试绘制”显示,这样您就可以准确地看到物理引擎在做什么。
标签: android png box2d andengine collision-detection