![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Collusion Detection на ID3DXSprite [Delphi, D3D9]
ElectriC © (2007-09-15 19:16:00)Есть спрайт с прозрачностью(т.б. с альфа-каналом) в некоторых местах.
Как узнать, находится ли точка на прозрачной(альфа-канале) области спрайта?
P.S. Если такое возможно на ID3DXSprite.
ElectriC (2007-09-19 15:08:00) [1]
> megabyte-Ceercop ©
Спасибо.
P.S. Правильно ли выводить GUI с помощью ID3DXSprite?
megabyte-Ceercop (2007-09-19 11:58:00) [2]Сделай окружность с ней проще всего, не придется учитывать поворот.
Я сам вообще использую прямоугольник без учета поворота спрайта.
по такой формуле
if ((Abs(Xobj - Xmouse) < Wobj/3) && (Abs(Yobj - Ymouse) < Hobj/3) )
then коллизия есть.
Wobj, Hobj - ширина и высота объекта соотв. Делиться должно на 2, если объект ровно прямоугольный, но если его края рваные и неправильные, то делим на 3, чтобы заузить тело колизии.
ElectriC (2007-09-18 19:47:00) [3]Просто я вывожу GUI с помощью ID3DXSprite (Кстати это нормально - т.б. быстро ли?).
P.S. Как проверить попадание точки в прямоугольник с округлыми краями?
PixelShader (2007-09-18 15:12:00) [4]Megabyte-ceercop
+1
Проверка через свой бэкбуффер может еще усложнится тем, что спрайт может быть повернут, смасштабирован, иметь покадровую анимацию и тд.
Потому если этот возможно, лучше использовать коллижн окружностей\прямоугольников. Будет быстрее и проще в реализации.
Megabyte-ceercop (2007-09-18 08:28:00) [5]Действительно ли необходима такая коллизия? Если это для того чтобы мышкой перетаскивать объект, достаточно проверять попадание в окружность по центру объекта. Это даже удобнее в большинстве случаев.
Если нужна попиксельная коллизия, то придется делать вручную, через свой бэкбуфер альфы.