Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.04;
Скачать: CL | DM;

Вниз

Солкновения   Найти похожие ветки 

 
8bit   (2003-05-19 15:29) [0]

Проблема. Как узнать столкнулис спрайты или нет ?Например, попал ли снаряд в танк или пролетел мимо и т.д.


 
Kobik ©   (2003-05-20 19:39) [1]

Для каждой точки из первого спрайта проверяешь соответствующую ей в другом спрайте (конечно учитывая координаты самих спрайтов). Если обе точки непрозрачные, значит произошло столкновение.


 
Плохой человек   (2003-05-20 20:13) [2]

>конечно учитывая координаты самих спрайтов

Имеется ввиду, столкнулись ли "прямоугольники", в которых находятся изображения этих спрайтов. Если они столкнулись (а это вычисляется по координатам вершин), то можно при желании проверить и по-точечно.


 
Vin_Ghost   (2003-05-20 23:35) [3]

В DelphiX есть встроенная процедура DoCollision, которая проверяет столкнулись спрайты или нет. Синтаксис примерно такой:
Procedure TPlayerSprite.DoCollision(Sprite: TSprite; Var Done: Boolean);
Begin
If (Sprite Is TEnemy) Then //если столкнулся с врагом
Begin
Dec(FLife); //уменьшить жизни
TEnemy(Sprite).Hit; //что происходит с врагом(описать самому)
AnimPos:=3; //сменить
AnimCount := 1; //картинку (отображение удара)
If FLife<=0 Then
Begin
frmMain.PlaySound("Explosion", False); //звук взрыва
Collisioned := False;
Done:= False;
//вместо спрайта объекта рисуем взрыв
( "Explosion") [3]
В DelphiX есть встроенная процедура DoCollision, которая проверяет столкнулись спрайты или нет. Синтаксис примерно такой:
Procedure TPlayerSprite.DoCollision(Sprite: TSprite; Var Done: Boolean);
Begin
If (Sprite Is TEnemy) Then //если столкнулся с врагом
Begin
Dec(FLife); //уменьшить жизни
TEnemy(Sprite).Hit; //что происходит с врагом(описать самому)
AnimPos:=3; //сменить
AnimCount := 1; //картинку (отображение удара)
If FLife<=0 Then
Begin
frmMain.PlaySound("Explosion", False); //звук взрыва
Collisioned := False;
Done:= False;
//вместо спрайта объекта рисуем взрыв
Image := frmMain.DXImageList.Items.Find("Explosion");
Width := Image.Width;
Height := Image.Height;
//тут всё понятно
AnimCount := Image.PatternCount;
AnimLooped := False;
AnimSpeed := 15/1000;
AnimPos := 0;
End;
End;
End;


Если надо, то могу прислать исходники своей игрухи. А вообще, посмотри исходники DelphiX в папке Source


 
cyborg ©   (2003-05-21 00:19) [4]

Vin_Ghost (20.05.03 23:35)
и где тут проверяет?


 
Kair ©   (2003-05-21 08:13) [5]

www.gamedev.ru
"Статьи->DelphiX".



Страницы: 1 вся ветка

Текущий архив: 2003.12.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
8-11629
Misha
2003-08-03 17:50
2003.12.04
форматы


4-11720
Dens
2003-10-09 13:31
2003.12.04
Как отловить события создания, удаления, активации MDI-child форм


3-11593
Infinity1
2003-11-16 16:58
2003.12.04
LookUp Combo


3-11585
Nick-From
2003-11-16 01:06
2003.12.04
Переменные TpFibDataSet и TpFibTransaction


4-11723
A_BOS_A
2003-10-09 04:54
2003.12.04
Если текст в к.-н. окне можно выделить, то....