2013-03-16 18 views
0

В нашем gamedesign мы хотим реализовать collisiondetection (надеюсь), чтобы проверить фоновый слой наших карт. В настоящее время мы используем .png, но проблема заключается в том, что канал прозрачности (альфа) является полезной информацией для верхнего уровня (решение прозрачности), мы не можем использовать этот слой в качестве битовой маски, не делая изображение прозрачным. Поскольку наша игра представляет собой pilebased RPG, проверки были бы простыми (итерация каждого пикселя блока, если альфа = 1, то этот блок является сплошным каркасом и не может пройти или наступить).Изображение с несколькими слоями

Альтернативы (те, о которых мы можем думать) требуют слишком большой настройки. Например, наличие второго изображения не оставляет места для ошибки, поскольку они должны полностью совпадать. Кроме того, для обозначения отдельных блоков изображения в качестве walkable требуется, чтобы мы сохраняли эту информацию в изображении или вручную устанавливали это, что слишком грубо. Идея слоя прозрачности (если вы можете предложить способ ее работы) идеальна, поскольку вы можете просто затенять изображение в Photoshop и создать прозрачное изображение, которое почти не требует работы.

TLDR; Можете ли вы использовать альфа-канал png в java как форму битовой маски без рендеринга прозрачности? Любые графические форматы легко обрабатываются качелями, которые могут хранить несколько слоев?

ответ

0

вы работаете с одним значением, поэтому почему бы не зарезервировать 1 номер в одном из других каналов. Сохраните 16 миллионов цветов, но сохраните b = 0 в качестве цвета столкновений. Люди не смогут сказать разницу между 0,0,0 и 0,0,1, поэтому просто никогда не используйте чистый черный цвет, проблема решена без странной прозрачности.

+0

Что делать, если изображение действительно имеет почти черный пиксель с (0,0,1). Существует также проблема кодирования этого. – arynaq

+0

это ваша игра, вы контролируете игровые активы. Вы проверяете этот материал, для этого есть много инструментов. Использование полного дополнительного канала, если все, что вам нужно, является необходимым 1-битным значением, добавление полного канала очень расточительно. Разумеется, вы можете использовать альфа-канал и установить его на 255 или 254 в зависимости от того, нужно ли вам столкновение, но это действительно глупо. Вы просто лишний раз увеличили размер активов на 1/3. –

Смежные вопросы