Skocz do zawartości
Zaloguj się, aby obserwować  
BigComeBack

Kolizja sprite'ów

Polecane posty

Witam!

Uprzedzam, że z większością podobnych tematów z innych forów zapoznałem się i nie rozwiązały one mojego problemu. Dokładnie chodzi mi o kolizję między dwoma Sprite'ami(jeden stoi, druga rusza się za pomocą DoMove), w której pierwszy Sprite ma możliwość pójścia w inną stronę, która nie jest zablokowana przez tego drugiego Sprite'a, który jest "powielony"(pochodzi z tablicy) i tworzy labirynt... Oczywiście opieram się na procedurze DoCollision, ale w zupełności nie mogę wymyślić, jak nasz "ludek" ma iść w stronę niezablokowaną...Mniej więcej tak moja procedura wyglądała...

procedure TGracz.DoCollision(Sprite: TSprite; var Done: Boolean);

var a2,b2:smallint;

begin

If (Sprite is TKlocek) then

begin

for a2:=1 to 16 do

for b2:=1 to 10 do

begin

if mapa[a2,b2]=true then

begin

If (Klocek[a2,b2].x+x1=Gracz.X) or (Klocek[a2,b2].X=Gracz.X+x1) or

(Klocek[a2,b2].Y+y1=Gracz.Y) or (Klocek[a2,b2].Y=Gracz.Y+y1) then

Gracz.Collisioned:=true;

end;

end;

end;

end;

 

Jakby mapa jest tablicą boolean, za pomocą której stworzyłem z pliku tekstowego typu 0-1 kształt mojej mapki...

 

Załączam także wygląd dotychczasowy wygląd mojej gry :)

 

Z góry dziękuje za pomoc i sorki za "informatyczne kolokwializmy" i pewnie jakieś durne błędy, ale po prostu dopiero zaczynam :)

 

P.S. Korzystam z delphixu bo jest najprostszy :)

post-3359-0-08643200-1335904221_thumb.jpg

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ja w tym wypadku nie operowałbym x i y tylko numerami kolumn i wierszy. Przed wykonaniem ruchu np w górę sprawdza się warunek przy wciśnięciu kursora.

if not(mapa[Gracz.kolumna,Gracz.wiersz-1])then {rusz się do góry};

 

W DX nie używałem, ale w omedze OmegaSprite miał już napisaną procedurę do sprawdzania kolizji i sam pisałeś tylko reakcję na kolizje(OnCollision) dla poszczególnych typów.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się
Zaloguj się, aby obserwować  

×