Как проверить, является ли пиксель внутри CCSprite прозрачным или нет - PullRequest
2 голосов
/ 30 декабря 2011

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

1 Ответ

3 голосов
/ 30 декабря 2011

Это можно сделать с помощью API OpenGL, но это было бы неправильным решением. Я предлагаю определить точку касания внутри формы спрайта (это будет определено вручную). Для расчета ограничивающей фигуры вы можете использовать, например, этот инструмент: SpriteHelper . Для проверки точки внутри многоугольника (даже невыпуклой) существует хороший алгоритм: Определение, лежит ли точка внутри многоугольника . Я использую этот метод в своей игре для iPhone.

Что касается эффективности этого метода по сравнению с прямой проверкой непрозрачности пикселей:

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

PS: Если вы определенно хотите проверить пиксели, хорошим решением будет создание дополнительной логической карты пикселей текстуры (где каждый бит реагирует на порог пикселей).

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