使用libGDX添加地面陷阱

时间:2013-11-30 18:42:34

标签: java android libgdx

我正在尝试查找如何在libGDX中添加地面陷阱,但无济于事。我想找一个陷阱的例子。如果它使用对象colisions,那将是非常好的,但我不知道是否可以做到不使它们无法通过。

一个用例就像caltrops,玩家应该能够越过它们,但仍然会发生碰撞。

1 个答案:

答案 0 :(得分:0)

您的问题缺少很多信息。但似乎你使用的是boxd2,因为如果你使用自定义代码处理冲突,你可以轻松解决问题。

如果您使用的是boxd2,则可以将陷阱体设为传感器。

body.getFixtureList().get(0).setSensor(true); //assuming it has only one fixture

并将其UserData设置为可以在发生冲突时检查的内容。

body.getFixtureList().get(0).setUserData("trap");

然后,定义一个联系人监听器,以检查与具有该用户数据的主体的冲突:

//define the Contact listener
public class MyContactListener implements ContactListener{

    @Override
    public void beginContact(Contact contact){
        if ((String)contact.getFixtureA().getUserData()=="trap" || (String)contact.getFixtureB().getUserData()=="trap")
            //hurt player
    }

    @Override public void endContact(Contact contact){}
    @Override public void preSolve(Contact contact, Manifold oldManifold){}
    @Override public void postSolve(Contact contact, ContactImpulse impulse){}
};

在你的ini代码中创建并设置联系人监听器。

MyContactListener contactListener = new MyContactListener();
world.setContactListener(contactListener);