Делаю игрушку на Libgdx + box2d. Простой платформер. Сегодня столкнулся с чем-то непонятным: делаю движущиеся платформы, используя KinematicBody, а двигаю их с помощью метода setLinearVelocity. Хочу чтобы когда игрок стоит на платформе, он двигался вместе с ней. Попробовал сделать следующую вещь. В методе update(), где происходит обновление всей логики каждый кадр написал такую вещь:
Array<Contact> contacts = world.getContactList();
for (Contact contact : contacts){
Fixture fa =contact.getFixtureA();
Fixture fb = contact.getFixtureB();
if((fa.getUserData() instanceof Player && fb.getUserData() instanceof MovingPlatform) ||
(fa.getUserData() instanceof MovingPlatform && fb.getUserData() instanceof Player)) {
player.p_body.setLinearVelocity(player.p_body.getLinearVelocity().x+1,player.p_body.getLinearVelocity().y);
}
}
И обнаружил следующее - столкновение игрока с платформой определяется РАНЬШЕ, чем происходит на самом деле. Что это это за фигня такая? И как сделать нормальную движущуюся платформу?
P.S. мир обновляется так: world.step(delta, 6, 2);