如何从Sprite创建边界(AndEngine)

时间:2012-12-03 01:08:23

标签: java android andengine

所以我的精灵应该不适合我的角色。

问题是我不知道该怎么做。

这是我正在尝试的。当从级别加载精灵时,我将精灵添加到链接列表中。

然后我遍历列表以检测角色是否与任何不可行的精灵/瓦片碰撞。

我在引擎更新线程上执行此操作,该线程每秒运行一次。

我是这样做的:

mScene.registerUpdateHandler(new IUpdateHandler(){

        @Override
        public void onUpdate(float pSecondsElapsed) {


            Iterator<Sprite> wall_collision = unwalkable_Sprites.iterator();

            while(wall_collision.hasNext()){
                Sprite sprite = wall_collision.next();

                if(character_sprite.collidesWith(sprite)){


                }
            }

        }

        @Override
        public void reset() {
            // TODO Auto-generated method stub

        }

    });

所以问题是如何在角色与不可行走的瓷砖碰撞时如何定位角色,这样角色甚至不会越过瓷砖。对于用户来说,它应该看起来像是一个边界。

有没有人有任何建议或知道如何做到这一点?

1 个答案:

答案 0 :(得分:2)

查看此example

在步骤中使用相同的代码作为“地面”。你应该使用静态物体:

this.mPhysicsWorld = new PhysicsWorld(new Vector2(0, SensorManager.GRAVITY_EARTH), false);
final FixtureDef wallFixtureDef = PhysicsFactory.createFixtureDef(0, 0.5f, 0.5f);

您可以在此处使用Shape,例如Sprite

//final Shape yourTile = new Rectangle(0, CAMERA_HEIGHT - 2, CAMERA_WIDTH, 2); Sprite yourTile = new Sprite(...); PhysicsFactory.createBoxBody(this.mPhysicsWorld, yourTile, BodyType.StaticBody, wallFixtureDef);

在这里你可以找到AndEngine的box2dExtension(它需要使用Bodies)

抱歉我的英文:)希望这会对你有帮助。

P.S。并且您不再需要检查此问题的冲突。