Итак, я пытаюсь сделать одностороннюю стену, что означает, что мой актер может передать этот объект только одной стороне (например, только нижней или верхней). Я начал читать этот урок: one-way-walls , но когда я попытаюсь, проверив направление моего актера, отключить его, он не работает. Я думаю, что мой вопрос может покупать по этой частиlibgdx - Как отключить столкновение
Так как мы будем использовать BeginContact событие, которое происходит только один раз в столкновение, мы можем использовать только SetEnabled один раз, чтобы изменить поведение контакта. Проблема заключается в том, что после каждого шага контакт снова вернется к включению. Мы могли бы отметить, какие контакты мы отключили, а затем проверяем их список каждый раз в PreSolve, но это неэффективно и неэффективно, чем меня могут беспокоить сегодня. Или в любой день на самом деле :) Итак, мы просто тихо прокрадимся в b2Contact.cpp и закомментируем строку в начале функции обновления, которая снова активирует контакт. После того, как вы закончите, он должен выглядеть так: // Повторно включить этот контакт. // m_flags | = e_enabledFlag;
Проблема в том, что я использую java-версию libgdx в AndroidStudio, и я понятия не имею, как найти и изменить этот фрагмент кода. Так что мне нужен способ изменить его или другое решение, чтобы избежать повторного включения этого состояния столкновения в каждом цикле.
Я сделал предварительные решения, и он работал нормально, но я не понимаю, почему ... –
Проблема с beginContact и endContact заключается в том, что tey вызывается только один раз для каждого контакта. Поэтому, если ваш актер прикасается к стене в течение получаса, вы получаете только один звонок для начала. PreSolve, с другой стороны, вызывается на каждом шагу. – Sebastian
Теперь ясно, спасибо! –