AndEngine: столкновение двух спрайтов - PullRequest
4 голосов
/ 12 сентября 2011

Я занимаюсь разработкой небольшой игры для Android. Прежде чем я начал использовать AndEngine, я использовал объект Canvas и рисовал на нем все. Для проверки, сталкиваются ли два растровых изображения друг с другом, я проверил, перекрывают ли их ограничивающие рамки. В этом случае я проверил, имеет ли перекрывающий прямоугольник обоих растровых изображений один общий прозрачный пиксель. Этот метод работал безупречно, и я смог обнаружить идеальные столкновения пикселей.

Из-за некоторых проблем с производительностью я начал использовать AndEngine. Обнаружение столкновений работает довольно хорошо, но тесты столкновений для двух спрайтов определенно не соответствуют рабочему пикселю. Тесты на столкновение - это всего лишь ограничивающий тест.

Ответы [ 2 ]

5 голосов
/ 12 сентября 2011

Вот хороший пример пиксельного идеального обнаружения,

AndEngine - Пиксельное идеальное обнаружение

1 голос
/ 18 июля 2013

Ниже код для столкновения двух анимированных спрайтов хорошо работает для меня в andEngine без использования класса pixelPerfect. Это может помочь вам.

public boolean isCollides(AnimatedSprite animSprite1 ,AnimatedSprite animSprite2) throws Exception{


float diffX = Math.abs( (animSprite1.getX() +  animSprite1.getWidth()/2 )- 
             (animSprite2.getX() + animSprite2.getWidth()/2 ));
float diffY = Math.abs( (animSprite1.getY() +  animSprite1.getHeight()/2 )- 
             (animSprite2.getY() + animSprite2.getHeight()/2 ));

if(diffX < (animSprite1.getWidth()/2 + animSprite2.getWidth()/3) 
           && diffY < (animSprite1.getHeight()/2 + animSprite2.getHeight()/3)){

   return true;
}else
  return false;
}
...