Andengine Tiledmap如何让精灵不会被另一个精灵所阻挡?
问题描述:
我有一个工作碰撞系统,我不想让“玩家”通过的精灵。问题是我不知道我应该在碰撞时执行什么以使玩家不会传递精灵。Andengine Tiledmap如何让精灵不会被另一个精灵所阻挡?
wallCollision()方法当前为空。
if(tmxTileProperties.containsTMXProperty("collision", "1")) {
Rectangle rect = new Rectangle(tmxTile.getTileX(), tmxTile.getTileY() ,128, 128, mEngine.getVertexBufferObjectManager())
{
@Override
protected void onManagedUpdate(float pSecondsElapsed)
{
if (player.collidesWith(this))
{
wallCollision();
}
}
};
rect.setVisible(false);
mainScene.attachChild(rect);
}
答
问题位于here解决这个问题。下面的方法创建一个JBox2D主体,与被阻塞的tile相同的位置。我不知道这是如何与路径结合使用以排除被阻塞的磁贴,但我已经看到在其他地方使用相同的方法,假设您使用的是GLES2。希望这可以帮助。
private void createUnwalkableObjects(TMXTiledMap map){
// Loop through the object groups
for(final TMXObjectGroup group: this.mTMXTiledMap.getTMXObjectGroups()) {
if(group.getTMXObjectGroupProperties().containsTMXProperty("wall", "true")){
// This is our "wall" layer. Create the boxes from it
for(final TMXObject object : group.getTMXObjects()) {
final Rectangle rect = new Rectangle(object.getX(), object.getY(),object.getWidth(), object.getHeight());
final FixtureDef boxFixtureDef = PhysicsFactory.createFixtureDef(0, 0, 1f);
PhysicsFactory.createBoxBody(this.mPhysicsWorld, rect, BodyType.StaticBody, boxFixtureDef);
rect.setVisible(false);
mScene.attachChild(rect);
}
}
}
}