我在android上的遊戲我想讓我的玩家碰到一個不可移動的>對象。應該檢測到這種碰撞,但它不應該實際停止>播放器。
你需要的是一個Box2D的傳感器主體,它可以檢測配對的定製ContactListener。您的播放器也將是Box2D機身。以UserData的形式給出你的兩個身體標識符(例如簡單的字符串)。然後您可以在您的ContactListener中檢查這些UserDatas。
Fixture.setUserData(...)
你ContactListener將實現Box2D的ContactListener並覆蓋其方法:
public class MyContactListener implements ContactListener{
@Override
public void beginContact(Contact contact) {
Fixture fa = contact.getFixtureA();
Fixture fb = contact.getFixtureB();
if(fa == null || fb == null) return;
// ...
}
@Override
public void endContact(Contact contact) {
Fixture fa = contact.getFixtureA();
Fixture fb = contact.getFixtureB();
if(fa == null || fb == null) return;
// ...
}
@Override
public void preSolve(Contact contact, Manifold oldManifold) {}
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {}
}
的Box2D的身體和傳感器聲明作爲練習留給讀者。
的Box2D的初學者教程可以在這裏找到: http://rotatingcanvas.com/using-box2d-in-libgdx-game-part-i/
所以你的問題是如何實現ContactListener?查看本教程:https://xoppa.github.io/blog/using-the-libgdx-3d-physics-bullet-wrapper-part1/,請務必完整閱讀。 – Xoppa