collision detection C# XNA

Vieta, kur parunāt par to, kas nav atsevišķi izdalīts augstāk
Post Reply
Message
Author
User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

collision detection C# XNA

#1 Post by kristapuciitis » 07 Nov 2011, 12:28

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?
Gooby pls

User avatar
vecais_dumais_laacis
Guru
Guru
Posts: 109
Joined: 06 Dec 2010, 19:48
Contact:

Re: collision detection C# XNA

#2 Post by vecais_dumais_laacis » 07 Nov 2011, 13:02

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
...un ja bites buutu laachi...

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: collision detection C# XNA

#3 Post by kristapuciitis » 07 Nov 2011, 13:29

Vienalga nesapratu, kā atrast tuvākos lauciņus. Pēc kāda algoritma?
Gooby pls

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 12:54

Re: collision detection C# XNA

#4 Post by bubu » 07 Nov 2011, 13:38

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++)
  {
    // ...
  }

Post Reply

Return to “Programmēšana / Programming”