Implementați detectarea accesărilor pentru fiecare tip de MapChip

Pagina actualizată :
Data creării paginii :

Mediul de verificare

Windows
  • Ferestre 11
Unity Editor
  • 2021.3.3F1
Pachet sistem de intrare
  • 1.3.0

Cerințe preliminare pentru acest sfat

Următoarele setări au fost făcute în avans ca premisă pentru descrierea acestui sfat.

Care sunt premisele pentru acest sfat?

Despre împrumutarea materialelor cartografice

Procesăm împrumutate de pe următoarele site-uri.

La început

De data aceasta, MapChips-urile sunt plasate într-un singur TileMap și se decide dacă se efectuează determinarea loviturii în funcție de tipul de MapTip plasat.

Deoarece acest sfat este în mare parte același cu un alt sfat "Implementați detectarea accesărilor cu hărți tilemap", Vă rugăm să consultați acolo pentru o explicație detaliată. Aici, numai procedura este explicată pentru același conținut și se adaugă numai diferențele.

Implementarea personajelor de mers pe jos

Mai întâi, pregătiți o imagine sprite pe care jucătorul o va controla pentru a efectua operația de detectare a loviturilor și adăugați-o la proiectul dvs. De data aceasta, dimensiunea vârfului hărții este de 32 de pixeli, așa că voi face imaginea de aceeași dimensiune.

Voi omite animația de mers pe jos de data aceasta, deoarece procedura va fi lungă dacă este implementată. Dacă doriți să o implementați, vă rugăm să consultați următoarele sfaturi.

Selectați imaginea pe care ați adăugat-o la proiect. Deoarece dorim să potrivim unitatea cu cipul hărții, setați "Numărul de pixeli pe unitate" la "32".

Odată configurat, faceți clic pe butonul "Aplicați" de mai jos.

Odată ce imaginea este setată, plasați imaginea în vizualizare și adăugați obiectul.

Setați procesul de mișcare al personajului. Adăugați scriptul și lăsați-l numit Player .

Scenariul arată astfel: Acesta este un proces simplu de mișcare care mișcă personajul cu tastatura.

using UnityEngine;
using UnityEngine.InputSystem;

public class Player : MonoBehaviour
{
  // 一定時間ごとに呼ばれます
  void FixedUpdate()
  {
    // キーボードの情報を取得
    var keyboard = Keyboard.current;

    // スプライトの移動処理
    if (keyboard.leftArrowKey.isPressed)
    {
      transform.Translate(-0.1f, 0, 0, Space.World);
    }
    if (keyboard.rightArrowKey.isPressed)
    {
      transform.Translate(0.1f, 0, 0, Space.World);
    }
    if (keyboard.upArrowKey.isPressed)
    {
      transform.Translate(0, 0.1f, 0, Space.World);
    }
    if (keyboard.downArrowKey.isPressed)
    {
      transform.Translate(0, -0.1f, 0, Space.World);
    }
  }
}

Scriptul pe care îl creați se atașează la obiectul caracterului.

Rulați jocul și verificați dacă personajul se mișcă cu tastatura.

Pregătirea MapTips

Pregătiți o imagine cu vârful hărții și adăugați-o la proiect. Pe măsură ce numărul de cipuri de hartă crește, setarea devine dificilă, așa că de data aceasta am pregătit doar două pătrate, unul care poate fi parcurs și unul care nu poate merge.

Selectează imaginile pe care le-ai adăugat la proiect și configurează setările pentru MapChips. Consultați următoarele sfaturi pentru mai multe informații:

Odată configurat, faceți clic pe butonul Aplicare și apoi pe butonul Editor Sprite.

Împărțiți la 32 pixeli.

Selectați fila Paletă dale pentru a crea o paletă. Dacă nu există file, le puteți afișa din meniu cu "Window > 2D -> Tile Palette". Numele paletei poate fi orice, dar aici este "MapChipPalette".

Deoarece îl vom salva într-un folder, creați un nou folder "MapChipPalette" în folderul Scene și specificați-l.

Un folder MapChipPalette a fost adăugat la proiect.

Apoi, veți adăuga MapTips la paletă. Trageți și fixați imaginea cu vârful hărții divizate în paletă.

MapTips au fost adăugate la paletă.

Crearea unei hărți

Lăsați deoparte setările de detectare a accesărilor și creați mai întâi harta. Puteți configura detectarea accesărilor mai târziu. Mai întâi, adăugați o hartă tilemap la ierarhie.

Odată adăugat, selectați Tilemap. Vizualizarea afișează o grilă.

Mai întâi, setați un cip de hartă care nu devine un perete în vizualizare.

Pentru moment, am pus-o peste tot.

Apoi, așezați vârful hărții de piatră care va servi drept perete.

De data aceasta nu a fost nicio problemă, dar dacă personajul tău va fi în spatele hărții, setează ordinea straturilor la un număr mai mare decât Tilemap.

Desigur, chiar dacă mutați jocul în acest moment, veți aluneca prin perete și veți merge.

Setări de detectare a accesărilor MapChip

De aici, vom stabili dacă vom intra în judecată pentru fiecare tip de cip de hartă. Mai întâi, deschideți folderul "MapChipPalette" pe care l-ați creat când ați creat paleta.

Există un vârf de hartă setat în paleta din interior, deci selectați mai întâi un sfat pe care puteți merge.

Din Inspector, setați valoarea Collider Type la None. Mai târziu, veți adăuga o setare de detectare a coliziunilor la Tilemap, dar setarea acesteia la "Niciuna" va împiedica coliziunea acestui cip de hartă.

Celălalt vârf de hartă din piatră este setat la "Grilă". Deoarece nu este un maptip transparent de data aceasta, nu există nicio problemă cu "sprite", dar dacă îl setați la "sprite", acesta nu va fi judecat prin lovirea părții transparente a imaginii.

Asta e tot ce există pentru MapTip. Este ușor, deoarece există doar două dintre ele de data aceasta, dar dacă aveți un număr mare de jetoane de hartă, trebuie să setați atât de mult.

Setări de detectare a coliziunilor

De aici, este aproape același cu conținutul "Implementați detectarea loviturilor cu tilemap".

Mai întâi, efectuați setările necesare pentru detectarea coliziunii caracterelor. Adăugați "Physics 2D -> Circle Collider 2D" ca componentă. De data aceasta, personajul este rotund, așa că l-am făcut un cerc, dar vă rugăm să selectați Cutie sau Capsulă în funcție de formă.

Vom adăuga, de asemenea, "Physics 2D -> Rigidbody 2D".

Setați scara gravitațională la 0 pentru a preveni căderea gravitației. De asemenea, verificați Z pentru "Remediați rotația" pentru a preveni rotirea personajului.

Pentru Tilemap, adăugați componenta Tilemap -> Tilemap Collider 2D.

Puteți vedea că o linie verde a fost adăugată în jurul vârfului hărții de piatră din vizualizare. Aceasta înseamnă că detectarea loviturilor este setată numai pentru pietre. Puteți vedea că setarea tipului de accelerator a vârfului hărții din paleta de mai sus este reflectată.

Încercați să rulați jocul și să mergeți spre perete. Cred că vă puteți asigura că personajul se oprește în fața peretelui în mod corespunzător. Puteți vedea că poate fi implementat cu ușurință fără a scrie programe legate de detectarea loviturilor.

Combinarea detectării accesărilor MapChip

După cum sa menționat în sfaturile de mai jos, atunci când îl mutați efectiv, comportamentul detectării loviturilor de perete este puțin ciudat. Cauza și soluția sunt descrise în sfaturile de mai jos.

Cu toate acestea, prin combinarea părții de detectare a loviturilor din cipul hărții, comportamentul ciudat va fi corectat și sarcina de procesare va fi redusă în același timp, deci să o facem cel puțin.

Mai întâi, bifați "Utilizați în compozit" în Tilemap Collider 2D.

Sub Adăugare componentă, selectați Fizică 2D -> Composite Collider 2D.

"Rigidbody 2D" va fi, de asemenea, adăugat, deci faceți "Body Type" la "Static".

Apoi, cred că puteți confirma că judecata lovită a pietrei nu este pentru fiecare cip de hartă și este combinată.

Acum rulați jocul și asigurați-vă că funcționează corect.