Page 1 of 1

collision detection C# XNA

Posted: 07 Nov 2011, 11:28
by kristapuciitis
Sveiki!
Sāku mācīties C# ar XNA, izdomāju taisīt NES Tanku klonu, kuram ir top-down view. Sataisīju classi priekš Level, tajā ir array, kurš uzglabā katras rūtiņas X, Y tipu (zeme, siena). Man ir arī cita Tank class'e, kura ir domāta priekš galvenā, mana tanka. Jau sataisīju movement, viss ir kārtībā, bet atdūros pret collision detection problēmu. Zinu, ka XNA ir speciāla funkcija, kas nosaka, vai divi Rectangle(posX, posY, sizeX, sizeY) pārklājas, bet nezinu, kā to pareizi ievietot. Bija doma, ka var pārbaudīt katras rūtiņas collision'u ar Tanku, bet tas būs ļoti resursus rijoši. Vai nav citu iespēju, kā noteikt collision'u, lai būtu apskatītas tikai apkārtējās rūtiņas?

Re: collision detection C# XNA

Posted: 07 Nov 2011, 12:02
by vecais_dumais_laacis
izmanto 2dimensiju masiivu levelim
peec tanka koordinaateem var atlasiit tuveejos laucinjus un tad koliizijas paarbaudiit tikai ar tiem
ja tanks nav lielaaks par laucinju tad attieciigi max 4i laucinji jaapaarbauda

Re: collision detection C# XNA

Posted: 07 Nov 2011, 12:29
by kristapuciitis
Vienalga nesapratu, kā atrast tuvākos lauciņus. Pēc kāda algoritma?

Re: collision detection C# XNA

Posted: 07 Nov 2011, 12:38
by bubu
Ja tanks atrodas pozīcijā Tx,Ty, tad tuvākie lauciņu x,y koordinātes teiksim 5 rūtiņu attālumā dabū šādi:

Code: Select all

for (int x=Tx-5; x<=Tx+5; x++)
  for (int y=Ty-5; y<=Ty+5; y++)
  {
    // ...
  }