-
Есть спрайт с прозрачностью(т.б. с альфа-каналом) в некоторых местах. Как узнать, находится ли точка на прозрачной(альфа-канале) области спрайта? P.S. Если такое возможно на ID3DXSprite.
-
Действительно ли необходима такая коллизия? Если это для того чтобы мышкой перетаскивать объект, достаточно проверять попадание в окружность по центру объекта. Это даже удобнее в большинстве случаев.
Если нужна попиксельная коллизия, то придется делать вручную, через свой бэкбуфер альфы.
-
Megabyte-ceercop +1 Проверка через свой бэкбуффер может еще усложнится тем, что спрайт может быть повернут, смасштабирован, иметь покадровую анимацию и тд.
Потому если этот возможно, лучше использовать коллижн окружностей\прямоугольников. Будет быстрее и проще в реализации.
-
Просто я вывожу GUI с помощью ID3DXSprite (Кстати это нормально - т.б. быстро ли?). P.S. Как проверить попадание точки в прямоугольник с округлыми краями?
-
Сделай окружность с ней проще всего, не придется учитывать поворот. Я сам вообще использую прямоугольник без учета поворота спрайта. по такой формуле if ((Abs(Xobj - Xmouse) < Wobj/3) && (Abs(Yobj - Ymouse) < Hobj/3) ) then коллизия есть.
Wobj, Hobj - ширина и высота объекта соотв. Делиться должно на 2, если объект ровно прямоугольный, но если его края рваные и неправильные, то делим на 3, чтобы заузить тело колизии.
-
> megabyte-Ceercop ©
Спасибо. P.S. Правильно ли выводить GUI с помощью ID3DXSprite?
|