我正在尝试查找如何在libGDX中添加地面陷阱,但无济于事。我想找一个陷阱的例子。如果它使用对象colisions,那将是非常好的,但我不知道是否可以做到不使它们无法通过。
一个用例就像caltrops,玩家应该能够越过它们,但仍然会发生碰撞。
答案 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);