private boolean isPlayerGrounded (float deltaTime) { groundedPlatform = null; Array<Contact> contactList = world.getContactList(); for (int i = 0; i < contactList.size; i++) { Contact contact = contactList.get(i); if (contact.isTouching() && (contact.getFixtureA() == playerSensorFixture || contact.getFixtureB() == playerSensorFixture)) { Vector2 pos = player.getPosition(); WorldManifold manifold = contact.getWorldManifold(); boolean below = true; for (int j = 0; j < manifold.getNumberOfContactPoints(); j++) { below &= (manifold.getPoints()[j].y < pos.y - 1.5f); } if (below) { if (contact.getFixtureA().getUserData() != null && contact.getFixtureA().getUserData().equals("p")) { groundedPlatform = (Platform)contact.getFixtureA().getBody().getUserData(); } if (contact.getFixtureB().getUserData() != null && contact.getFixtureB().getUserData().equals("p")) { groundedPlatform = (Platform)contact.getFixtureB().getBody().getUserData(); } return true; } return false; } } return false; }
case MarioBros.MARIO_HEAD_BIT | MarioBros.COIN_BIT: if(fixA.getFilterData().categoryBits == MarioBros.MARIO_HEAD_BIT) ((InteractiveTileObject) fixB.getUserData()).onHeadHit((Mario) fixA.getUserData()); else ((InteractiveTileObject) fixA.getUserData()).onHeadHit((Mario) fixB.getUserData()); break; case MarioBros.ENEMY_HEAD_BIT | MarioBros.MARIO_BIT: if(fixA.getFilterData().categoryBits == MarioBros.ENEMY_HEAD_BIT) ((Enemy)fixA.getUserData()).hitOnHead((Mario) fixB.getUserData()); else ((Enemy)fixB.getUserData()).hitOnHead((Mario) fixA.getUserData()); break; case MarioBros.ENEMY_BIT | MarioBros.OBJECT_BIT: if(fixA.getFilterData().categoryBits == MarioBros.ENEMY_BIT) ((Enemy)fixA.getUserData()).reverseVelocity(true, false); else ((Enemy)fixB.getUserData()).reverseVelocity(true, false); break; case MarioBros.MARIO_BIT | MarioBros.ENEMY_BIT: if(fixA.getFilterData().categoryBits == MarioBros.MARIO_BIT) ((Mario) fixA.getUserData()).hit((Enemy)fixB.getUserData()); else ((Mario) fixB.getUserData()).hit((Enemy)fixA.getUserData()); break; case MarioBros.ENEMY_BIT | MarioBros.ENEMY_BIT: ((Enemy)fixA.getUserData()).hitByEnemy((Enemy)fixB.getUserData()); ((Enemy)fixB.getUserData()).hitByEnemy((Enemy)fixA.getUserData()); break; case MarioBros.ITEM_BIT | MarioBros.OBJECT_BIT:
private void ifCarThenCollide (Contact contact, Fixture f, Fixture other, ContactImpulse impulse) { Body body = f.getBody(); Object userData = f.getUserData(); if ((body != null) && (userData == CarType.PlayerCar || userData == CarType.ReplayCar)) { Car car = (Car)body.getUserData(); if (contact.getFixtureA().getUserData() == CarType.PlayerCar) { fcar = contact.getFixtureA(); } else if (contact.getFixtureB().getUserData() == CarType.PlayerCar) { fcar = contact.getFixtureB();