picking спрайтовых объектов
Автор: progman
решал сегодня задачу - узнать в какой объект ткнулась мыша
было два с половиной варианта
1. проверять boundsrect у всех спрайтов в кадре, если точка клика попадает в него то проверять пиксель спрайта на прозрачность, если не прозрачный то в кандидаты на ближайший к камере.
в конце цикла выдать ближайший к камере спрат в который мы ткнулись.
посчитал геморным то что надо выделять память под битмап каждой текстуры, потом удалять память и всё негативное связанное с этим.
выделить 16 метров просто под текстуру макс размера 4096х4096 - жалко 16 метров. Это на PC 16 метров ниачем, а на планшетнике у меня 512 метров ОЗУ.
вариант 1 с улучшением - для каждой текстуры хранить в битовом виде ее альфаканал. с него и брать инфу о прозрачности пикселя.
памяти расходуется значительно меньше чем 16 метров но лениво реализовывать.
2. рисовать всю сцену в монотонных цветах. каждому спрайту задать свой уникальный цвет. затем брать цвет пикселя экрана и таким образом понять куда ткнулись
вот так выглядит сцена при этом:
вобщем реализовал этот метод как самый простой и шустрый. пока доволен.
25 августа 2011