AndreyVoznyk
@AndreyVoznyk
Student of BSUIR.

Непонятки в box2d, что не так?

Делаю игрушку на 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);
  • Вопрос задан
  • 289 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы