Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как избежать наезда спрайтов друг на друга... [Delphi, DelphiX, Windows]


ballack ©   (2004-11-15 06:57:00) 

Подскажите простой способ, как можно избежать наезда спрайтов друг на друга при их столкновении, т.е. чтобы их прямоугольники никогда не пересекались. Спрайты двигаются на плоскости.


Megabyte-CeerCop   (2004-11-17 12:16:00) [1]

Я же помочь хочу.
Чего в этом смешного?


ballack   (2004-11-17 08:42:00) [2]

Спасибо, cyborg, направили на верный путь...

Megabyte-CeerCop, не очень смешно.


Megabyte-CeerCop   (2004-11-16 12:47:00) [3]

Есть способ проще. У спрайта TDXImageSprite есть свойство кажется DoNotNaesd.


TDXImageSprite
.DoNotNaesd := true;  //Запретить наезд спрайтов
TDXImageSprite.DoNotNaesd := false;  //Разрешить наезд спрайтов

Такой способ подойдет?


cyborg   (2004-11-15 11:11:00) [4]

Не обязательно, просто в функции перемещения и проверки столкновения запоминай координаты, можно во временных переменных, если что не так, то возвращай обратно.


ballack   (2004-11-15 11:09:00) [5]

То есть при любом перемещении хранить предыдущие координаты где-то в полях
DoMove:
..
FLastX := X;
FLastY := Y;
MoveProc;
.., а в DoCollision откатываться к ним:
..
If Sprite.ClassName Is Self.ClassName then
 X := FLastX;
 Y := FLastY;
...
Правильно я понял?


cyborg   (2004-11-15 10:20:00) [6]

Если есть коллизия (столкновение) то возвращай координаты назад.


Наверх

Титульная страница Поиск, карта сайта Написать письмо