Cum să aplatizați coliderul pentru o hartă de țiglă? (Dezvoltarea jocurilor, Unitate, 2D, Detectarea Coliziunii, Tilemap, Collider)

Matt a intrebat.

Sunt relativ nou în dezvoltarea de jocuri și lucrez la un simplu platformer 2D. Am creat un tilemap și am pictat câteva plăci pentru ca personajul să meargă pe… dar se blochează. Da, știu că aceasta este o întrebare comună și am găsit câteva răspunsuri (inclusiv acesta: Player gets stuck on edges between TilemapCollider2D tiles), dar niciunul nu pare relevant pentru mine. Chestia este că plăcile mele nu sunt plate… au margini ascuțite din cauza ierbii… vezi imaginea de mai jos:

După cum puteți vedea, marginea nu este plată. Am depășit problema blocării modificând „Edge Radius” la ceea ce vedeți în captura de ecran de mai sus și asta funcționează, dar personajul pare acum că plutește ușor deasupra solului. Există vreo modalitate prin care pot să-i spun lui Unity să ignore iarba zimțată și să facă coliderul plat și să mute marginea acestuia puțin mai jos? În acest fel s-ar rezolva problema și ar avea și un plus de a arăta ca și cum o parte din iarbă ar fi în spatele lui și o parte în față…

Comentarii

  • Presupun că ai încercat să editezi formele fizice pentru dale în editorul de sprite? Unde ai întâmpinat probleme?-  > Por DMGregory.
2 răspunsuri
Matt

Mulțumită lui @DMGregory, soluția pentru oricine altcineva cu aceeași întrebare este următoarea:

  • Găsiți sprite în proiectul dvs.
  • Deschideți editorul de sprite din inspector
  • Editați coliziunea

Dacă nu setați nici un colider aici, se pare că Unity își va da seama pentru dvs. în schimb… ceea ce, în cazul meu, nu a fost potrivit. Am transformat coliderul meu într-o cutie… după cum urmează:

și astfel, vizualizarea scenei mele apare acum după cum urmează:

În plus, am eliminat Rigidbody 2D și Composite Collider 2D și am debifat Used by Composite în caseta de selectare Tilemap Collider 2D.

Acum funcționează foarte bine.

Comentarii

  • Probabil că veți dori în continuare să folosiți coliderul compozit aici, deoarece acesta poate ajuta la eficiență prin combinarea grupurilor mari de coliziuni și poate evita problemele la îmbinările dintre dale.-  > Por DMGregory.
  • Vă mulțumim pentru aceste informații. Am adăugat din nou coliderul compozit și înțeleg ce vreți să spuneți.-  > Por Matt.
  • Bună treabă în rezolvarea problemei! Aștept cu nerăbdare să văd cum se dezvoltă jocul tău :)-.  > Por DMGregory.
  • Am o problemă foarte asemănătoare. Vreau să pot face coliderul tilemap plat și nu forma plăcilor. Am încercat ceea ce ai sugerat prin editarea sprites și asta îmi dă offset-ul de care aveam nevoie, dar nu un colider plat, este încă forma sprite-ului.. Problema cu faptul că tilemap collider-ul este forma sprite-ului este că personajul/jucătorul se mișcă/urmează orice imperfecțiune, deci o suprafață plată ar permite personajului să se deplaseze fără probleme pe platformă.  > Por Jack Phillips.
  • @Matt captura de ecran folosită aici ar putea fi înșelătoare. Doriți să faceți o captură în care să folosiți Custom Physics Shape al editorului de sprite? Se pare că un alt utilizator a avut impresia că tot ceea ce trebuie să editezi sunt setările Border prezentate în această captură de ecran, care sunt folosite pentru scalarea în 9 felii, nu pentru coliziune.-.  > Por DMGregory.
Jack Phillips

Am avut o problemă similară cu cea de mai sus. DMGregory a subliniat faptul că folosind forma fizică personalizată Physics Shape și, de asemenea, este posibil să fie nevoie să comutați coliziunea Tile la Grid și înapoi la Sprite din nou pentru ca aceasta să încarce forma de coliziune actualizată.