Как сделать идеальное столкновение пикселей на многих спрайтах в cocos2d? - PullRequest
3 голосов
/ 20 апреля 2011

в моем приложении у меня есть игрок и много врагов (около 100+) .. Я не хочу использовать CGRects, потому что он не подходит для врагов. Есть ли какой-нибудь пример, как сделать пиксельное обнаружение столкновений в cocos2d со многими спрайтами?

Некоторое объяснение было бы здорово;)

Большое спасибо!

РЕДАКТИРОВАТЬ : Я использую файлы CCSprite и .png. png имеет прозрачность, но он должен обнаруживать столкновения только с непрозрачными пикселями.

Редактировать: Мои враги круглые.

1 Ответ

4 голосов
/ 24 апреля 2011

Столкновение с окружностью - самое простое ... А вычисления - самые быстрые ... Надеюсь, вы знаете радиус игрока и радиус врага ... Пусть 20 будет радиусом игрока, а 10 - радиусом врага. Простойрасчет будет:

float dx = player.spr.x - enemy.spr.x;
float dy = player.spr.y - enemy.spr.y;
float dxy = dx*dx + dy*dy;
float collisionRad = (20+10)*(20+10);

if(dxy<= collisionRad)
{
//collision
}

Мы рассчитываем расстояние между 2 точками, используя теорему Пифагора. http://en.wikipedia.org/wiki/Pythagorean_theorem

...