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?
collision detection C# XNA
- vecais_dumais_laacis
- Guru
- Posts: 109
- Joined: 06 Dec 2010, 18:48
- Contact:
Re: collision detection C# XNA
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
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
...un ja bites buutu laachi...
- kristapuciitis
- Posts: 163
- Joined: 03 Jun 2011, 14:22
Re: collision detection C# XNA
Vienalga nesapratu, kā atrast tuvākos lauciņus. Pēc kāda algoritma?
Gooby pls
Re: collision detection C# XNA
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++)
{
// ...
}