Х-СOM The last hopeЖурнал

picking спрайтовых объектов

Автор:

решал сегодня задачу - узнать в какой объект ткнулась мыша

было два с половиной варианта
1. проверять boundsrect у всех спрайтов в кадре, если точка клика попадает в него то проверять пиксель спрайта на прозрачность, если не прозрачный то в кандидаты на ближайший к камере.
в конце цикла выдать ближайший к камере спрат в который мы ткнулись.

посчитал геморным то что надо выделять память под битмап каждой текстуры, потом удалять память и всё негативное связанное с этим.
выделить 16 метров просто под текстуру макс размера 4096х4096 - жалко 16 метров. Это на PC 16 метров ниачем, а на планшетнике у меня 512 метров ОЗУ.

вариант 1 с улучшением - для каждой текстуры хранить в битовом виде ее альфаканал. с него и брать инфу о прозрачности пикселя.
памяти расходуется значительно меньше чем 16 метров но лениво реализовывать.

2. рисовать всю сцену в монотонных цветах. каждому спрайту задать свой уникальный цвет. затем брать цвет пикселя экрана и таким образом понять куда ткнулись
вот так выглядит сцена при этом:
openxcomd_2011_09 | picking спрайтовых объектов

вобщем реализовал этот метод как самый простой и шустрый. пока доволен.

25 августа 2011