所以我的精灵应该不适合我的角色。
问题是我不知道该怎么做。
这是我正在尝试的。当从级别加载精灵时,我将精灵添加到链接列表中。
然后我遍历列表以检测角色是否与任何不可行的精灵/瓦片碰撞。
我在引擎更新线程上执行此操作,该线程每秒运行一次。
我是这样做的:
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
}
});
所以问题是如何在角色与不可行走的瓷砖碰撞时如何定位角色,这样角色甚至不会越过瓷砖。对于用户来说,它应该看起来像是一个边界。
有没有人有任何建议或知道如何做到这一点?
答案 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。并且您不再需要检查此问题的冲突。