2011-09-12 3 views
4

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

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

ответ

5

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

AndEngine - Pixel Perfect Detection

+0

В этих библиотеках используется старая версия And Engine –

1

Ниже код для столкновения двух анимированных спрайтов работает хорошо для меня в 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; 
} 
Смежные вопросы