Skocz do zawartości

[Delphi/Omega] Problem z testem kolizjii.


Tommalla2

Polecane posty

Witam. Wyświetlam świat złożony z TSprite'ów([b]ort! 2 warstwy + gracz pomiedzy nimi). Gdy wszystko zaczęło działać, pora była wprowadzić test kolizjii, aby gracz nie przechodził pod drzewami biggrin.gif . Jednak używając takiego kodu:
[code=Delphi]
var
Form1: TForm1;
mapa: array[0..119,0..119]of TKosNBX[N^VLNKLNW[[NBEC\"#ŚFVvW#w&7ŁDw&7ŁŚĆVVFF4)H4(źŃ4(4)Q55ĄąŃger);
var
x,y:integer;
begin
for x:=0 to 119 do
fNLLNHBY[BXVWK[XVWK
^Łś&6ĆŁąmąt`4(ąmątąmąt+ay;
end;
end;

constructor TKostka.Create(const A[YYT]NB[XYĆ7DFVÓDvTĆ7DFVÓ
67B-ąŃ%Ń4(4)4(ĄŃ Create(AParent);
Image := ImageListItem;
ImageIndex:=Id]NBYR[XYK[UYBZYR[XYK[RZYŚVćC&6VGW&RDś7FśfR67BfT6VC6ćvĆRŚ&4(ĄŃ5Ą5
4(4(4)
//koniec kostek
//rosliny
constructor TRoslina. Create(conT[YYT]NBvTĆ7DFVÓDvTĆ7DFVÓ
6%-ąŃ%Ń4(4)4(Ąited Create(AParent,ImageListItem,IdKlatka);
Image := ImagS][NB[XYR[^RY]NBYR[XYK[UYVvCŁvRFĆTVvCŚVćC
&6VGW&RE&6Ććć6ąĄMŃQŃą`ąądŃ4)
if (Sprite is TGracz)then
begin
TGracz(Sprite).fKo^N]YNB[B[BYX[BXBBGW&RDw&7G&sŚ&VvćW&FVBG&sGRŚć&VGŚ4(4(4)ŃŃQ
ŃĄA: TOmegaSprite;
const ImageListIt[N[XYS][NBY]FVvW Ś&VvćW&FVB7&VFĄA4(%%1Ń%Ń4(%%idKlatka;
width :=Image.TileWidth;
height :R[XYK[RZYB[]YNB^[X]VSć3ŁÓć6VCŁÓSć
7VVCŁÓ#ćĆŃ4(ŃџџQMmpleAnimSprite

end;
//koniec gracza tongue.gif

procedure TFoLKPX]J[X
NBBZ^[NBNćs'FSŚĆ7Ś&FVvW#Ś&VvVv67&VV6WDĄĄą4)4)4)4)4)=%.Initialize;
OmegaScreen1.Initialize;
OmegaImageList1.InitBYYR[XYS[]BXUXX]JYYT]LKVvvTĆ7C2vTĆ7BFV5łw&7ŁG'Vć2Vv6]Ńź4)``Ą=%1%1Items[1].TileWidth/2);
Gracz.Y:=trunc(OmegaScreen1.Height/2NBXNQXKJYYR[XYSK[XYS][WK[VvBó\"w&7F6ĆĆ6ŁG'VSw&7FV6V6łŁG'4)4(ąĄAąŹŃ4(IĄąŹ
for x:=0 to 119 do
for y:=0 to 119 do begin
readln(pZJNB[JJNBXVWNUKX]JYYT]LVvvTĆ7CvTĆ7BFV5&ćF\"&ćFŚSmąt=%1%1%ŃltQą]dth;
mapa[x,y].y:=y*OmegaImageList1.ImageList.Items[0][RZYBXVWK[Y[NBXVFV6V6łŁf6SĆ7Ś&Ł7G'FBbĆ7ŚąŃĄ4(ąmątQIą
ŃĄ=egaSprite1, OmegaImageList2.ImageList.Items[liczba],0);
X[VWK^
YYR[XY[K[XYS][KĆUvGF&6ĆŁVvvTĆ7C\"vTĆ%ŃmątQą!Ą=%ą%1%Ńl].TileHeight);
maparosliny[x,y].DoCollision:=true;
X[VWK^[X]YNBX[VsŁVvvVĆ7C\"vTĆ7BFV5śĆ7Ś&FĆTVvBÓ4(ąmątŹ=%1%1%ems[0].TileWidth;
maparosliny[x,y].fPusta:=false;
eB[HY[BX[VWNU[KX]JYYT&FSVvvTĆ7C\"vTĆ7BFV5śĆ7Ś&ąmątAŃŃ4(4(4(ąąĄąŹ
omegaTimer1.Enabled:=true;
end;

procedure TForm1.Omega[YU[Y[X
NBBN]NBY[BYYR[WCWFFSVv67&VV&Vv&VćFW#Vv67&VV6ĆV%64)ŃALŃŃŃĄŃ);

if oisdown in OmegaInput1.Keyboard.States then
MoveMa
CB[HY[YYR[]K^X][[fTÓ3\"ŚV6Rb7&vBVvWCśW&&B7FFWŃĄ554)ąą=%-States then MoveMap(-32,0);

OmegaSprite1.Collision;//z tyH[[Y[[H[HHHYHHYHX[HXBÓFFŚf\"ŁÓFFŚ&VvbfĄmątą]ŃĄmą.y>-32) and (mapa[x,y].y<omegascreen1.height) then
Y[BXVWK]B[B[BX]BŁÓFFŚf\"ŁÓFFŚ&Vvb&6ĆątĄąmątą]Ń and (maparosliny[x,y].y>-48) and (maparosliny[x,y].y<YYY[KZY
][BY[BYX[VWKW7Ff6RFV&6ĆG&sVćCŚbw&-ąŃŃĄ
Ń
ŃŹ-ą
end;


OmegaScreen1.EndRender;
end; [/code]
Jak już wcześniej wspomniałem w src- przy wywołaniu testu kolizji w TSprite, program się przywiesza, a potem działa z fps 1 biggrin.gif . To samo jest przy swiecie 3x3(sprawdzalem, czy to nie zalezy od ilosci kratek) oraz przy probie przeniesienia OnCollision do klasy TGracz. Ja sam dopiero się uczę, więc nie bądźcie zbyt srodzy, bo możliwe, że popełanima jakiś podstawowy bład wink.gif .

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...