BigComeBack Napisano Maj 1, 2012 Zgłoś Share Napisano Maj 1, 2012 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 Link do komentarza Udostępnij na innych stronach More sharing options...
LordLost Napisano Maj 12, 2012 Zgłoś Share Napisano Maj 12, 2012 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. Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.