Я занимаюсь разработкой Android-игры с 2D-прокруткой с использованием AndEngine и ее расширения BOX2D.
У меня есть тело игрока с двумя датчиками для «ног» и «головы», поэтому я могу точно знать, какая сторона игрока касалась другого объекта и т. Д. Вот изображение, показывающее, как это работает:
![enter image description here](https://i.stack.imgur.com/o3qqm.jpg)
Это хорошо работает для проверки, касается ли игрок в настоящее время касания земли ногами, поэтому он может прыгать, например, и т. Д. Теперь я пытаюсь реализовать действия, выполняемые после контакта с телом монстра.
В моем контактном датчике я проверяю
if (x1.getBody().getUserData().equals("monster") && x2.getUserData().equals("foot"))
{
jump();
}
if (x1.getBody().getUserData().equals("monster") && x2.getUserData().equals("player"))
{
GameManager.playSound(lostSound);
handleDie();
}
Но каждый раз, когда я прыгаю на «голову» монстра (так что, в основном, я касаюсь его датчиком ног), умершее действие выполняется. Поскольку оба контакта замечены слушателем контактов, это сработает, если я увеличу датчик ног, чтобы высовываться больше из тела игрока (тело игрока - точная форма текстуры спрайта игрока), поэтому было бы похоже, что не было контакта между игроком и монстром. на всех.
Заранее спасибо за любые советы, как правильно обращаться с ним.