Слой маски Cocos2d (освещение карты листов)

#iphone #cocoa-touch #cocos2d-iphone

#iPhone #cocoa-touch #cocos2d-iphone

Вопрос:

Я пытаюсь добавить освещение в определенной степени в моей игре для iPhone на основе карты листов. За неимением лучшего примера, я пытаюсь добавить освещение в стиле minecraft — чем дальше плитка от источника света, тем больше у нее «темного» оттенка.

Самый эффективный способ, который я могу придумать для этого, — добавить некоторый тип маски поверх слоя tilemap, чтобы создать этот эффект, и просто перемещать маски вместе с tilemap по мере перемещения игрока.

Я не смог найти никакой документации о том, как добавлять маски ко всему слою, возможно ли это? Или это плохая практика? Или вы можете придумать лучший возможный метод для достижения этого эффекта?

Ответ №1:

Самым простым и эффективным решением было бы изменить свойство цвета плитки. По умолчанию все узлы имеют цвет «белый», и, применяя серый цвет между черным и белым, вы сможете управлять яркостью плитки.

Однако обратите внимание, что когда вы обрабатываете плитку как CCSprite, cocos2d изменит плитку по сравнению с ее базовой реализацией и превратит ее в CCSprite. Это может привести к снижению производительности и / или памяти. Когда я в последний раз проверял cocos2d 0.99, каждый экземпляр CCSprite занимал 420 байт.