Родной метод Cocos для определения, виден ли спрайт на экране? - PullRequest
1 голос
/ 06 февраля 2012

Мне интересно, есть ли какой-нибудь простой инструмент в Cocos для автоматического определения, виден ли спрайт?Я мог бы самостоятельно написать код логики, но было бы неплохо, если бы в Cocos уже был встроен простой тест, чтобы увидеть, виден ли спрайт или иным образом скрыт за другим спрайтом.Поскольку у Cocos есть много других инструментов, которые избавляют от необходимости настраиваемой логики во многих местах, это может показаться вероятной частью этого набора инструментов, но я пока не могу найти ничего в моем поиске.

Это было бы простов случае проверки, если ограничивающая рамка для всех спрайтов с более высоким значением z покрывает или скрывает ограничивающую рамку рассматриваемого спрайта.

1 Ответ

0 голосов
/ 08 февраля 2012

Вы можете использовать эту функцию, чтобы определить, пересекаются ли два ребра (ограничивающие рамки спрайтов):

CGRectIntersectsRect(rect1, rect2);

, а затем рассчитать z-порядок. Если вы хотите быть более точным, вы можете рассчитать индекс, чтобы узнать, насколько первый спрайт покрывает второй:

Index = (2 * Area (CGRectIntersection(rect 1, rect2)))/(Area(rect1) + Area(rect2));

CGRectIntersection вычислить прямоугольник, сгенерированный пересечением двух других. Если индекс равен 1, два прямоугольника находятся точно один над другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...