【问题标题】:Collision Detection with Alpha in Box2D for AndEngine用于 AndEngine 的 Box2D 中的 Alpha 碰撞检测
【发布时间】: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


【解决方案1】:

然后使用盒子以外的形状(圆形可能是一个不错的选择)或使用自定义大小的盒子,它不会一直围绕您的精灵。如果您想要更高的精度,请使用多边形甚至多个多边形。

【讨论】:

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