Izvajanje zaznavanja zadetkov z zemljevidi ploščic

Stran posodobljena :
Datum ustvarjanja strani :

Okolje za preverjanje

Windows
  • Windows 11
Urejevalnik Unity
  • 2021.3.3F1
Paket vhodnega sistema
  • 1.3.0

Predpogoji za ta nasvet

Naslednje nastavitve so bile vnaprej narejene kot premisa za opis tega nasveta.

Kakšni so predpogoji za ta nasvet?

O izposoji gradiva zemljevidov

Izposojene obdelujemo na naslednjih spletnih mestih.

Izvajanje znakov za hojo

Najprej izvedite zemljevid in znak, ki izvaja zaznavanje zadetkov. Ta znak lahko premikate s tipkami kazalca na tipkovnici. Vendar, če izvedete pravilen sprehod, bo dolg in daleč od bistva knjižnih nasvetov, zato bom tokrat premaknil samo preprosto eno sliko.

Če želite uvesti animacije za hojo, si oglejte te nasvete:

Ko ustvarite projekt, dodajte sliko predmeta, ki ga želite premakniti v projekt.

Izberite sliko in nastavite piksle na enoto na 32 od inšpektorja. To je zato, ker je velikost enega kvadrata mapchipa 32 slikovnih pik, zato temu ustreza. Ko je konfiguriran, spodaj kliknite gumb »Uporabi«.

Postavite duhovnika v pogled.

Ustvarite skript za premikanje sprite. To je podobno naslednjim nasvetom:

Ime Player skripta pustite kot .

Šifra:

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);
    }
  }
}

Pritrdite na duhovnika, ki ga želite premakniti.

Zaženite igro in preverite, ali jo želite premakniti s tipkovnico.

Priprava MapTips

Najprej bomo pripravili mapchip in ustvarili zemljevid. Ta postopek je podoben naslednjim nasvetom: MapTips z dodatki 2D Tilemap lahko tudi zaznajo trke, vendar v tem članku ne bodo uporabljeni, ker bo postopek dolg.

Pripravite izvirno sliko MapTip in jo dodajte projektu. Za lažje razumevanje operacije pripravite "sprehajalno mesto" in "neprehodno mesto" za material kartografskega čipa.

Nastavite ga za MapChips v nadzorniku in kliknite gumb Uporabi. Ko je konfiguriran, odprite urejevalnik Sprite.

To je 32-točkovni namig zemljevida, zato ga bom razdelil na 32.

Izberite zavihek Paleta ploščic. Če ne, ga v meniju prikažite z "Window > 2D -> Tile Palette". Ustvarite novo paleto. Ime je poljubno, za zdaj pa ga bomo imenovali "MapChipPalette".

Ustvarite mapo MapChipPalette v razdelku Prizori in jo določite.

Dodajte opis zemljevida tako, da ga povlečete na paleto. Shranite ga v mapo MapChipPalette, ki ste jo ustvarili prej.

Ustvarjanje zemljevida

Tokrat bo sodba o zadetku zemljevida izvedena v enotah "Tilemap". Zato bomo ustvarili dva zemljevida ploščic, "Tilemap brez zaznavanja zadetkov" in "Tilemap z zaznavanjem zadetkov".

Najprej ustvarite dve preslikavi ploščic v hierarhiji. V mreži lahko ustvarite dva. Zaradi jasnosti sta imeni »TilemapObeject« in »TilemapGround«.

Najprej ustvarite "TilemapGround". Ker gre za premično območje, lahko preprosto položite tla. Če je na tleh, lahko spremenite vzorec.

Mimogrede, če je znak skrit, izberite predmet znaka in nastavite vrstni red Sprite Renderer plasti inšpektorja na 2. Vrstni red plasti je privzeto 0, Tilemap pa 0, zato, če ga povečate nad to vrednost, bo prikazan v ospredju.

Nato izberite TilemapObject in postavite opis zemljevida, ki ga želite narediti nepremično. Najprej nastavite vrstni red plasti na 1. To je, da se pojavi pred tlemi.

Tako izgleda, če skrijete tla.

Seveda na tej točki ni nastavitev, povezanih z zaznavanjem trkov, tako da lahko normalno vozite po visokih tleh. Po tem bomo nastavili zaznavanje trkov.

Nastavitve zaznavanja trkov

Najprej nastavimo lik. Ta nastavitev je skoraj enaka kot spodnji nasveti, zato bom preskočil podrobnosti in na kratko razložil postopek.

Izberite predmet znaka iz hierarhije in v možnosti Dodaj komponento izberite Fizika 2D-> Krožni trkalnik 2D. Če je oblika predmeta pravokotna, je "Box Collider 2D" v redu.

Podobno dodajte "Physics 2D -> Rigidbody 2D".

Gravitacijsko lestvico nastavite na 0, da preprečite samodejni Rigidbody 2D padec.

Preverite Z pod možnostjo Omejitve, da preprečite vrtenje sprite med trčenjem.

Nato izberite "TilemapObject", ki ga želite zadeti, in izberite "Tilemap -> Tilemap Collider 2D" iz "Dodaj komponento".

To je vse, kar je za to. Sploh ne potrebujete nobenega programiranja. Zaženite igro in poskusite udariti predmet, ki postane zid. Mislim, da se lahko prepričate, da se pravilno ustavi.

Vendar, ko ga boste dejansko udarili, mislim, da bodo v vedenju zaskrbljujoče točke. Tukaj je nekaj rešitev:

Neprijetno vedenje zaznavanja zadetkov z zemljevidom in rešitvami

Ko udarite ob zid, boste morda našli nekaj stvari, ki vas motijo.

Če se premaknete proti steni, se boste ujeli na sredini

Box Collider 2D Mislim, da se bo to zgodilo, če uporabljate predmet.

Na primer, iz spodnjega prizora, ko pritisnete tipko v spodnjem levem kotu, želite, da se premakne levo vzdolž stene. Vendar pa po določenem napredku mislim, da se bo nekaj zataknilo in se ustavilo.

Prepoznajte vdolbine v stenah po položaju

Circle Collider 2D Mislim, da je lahko razumeti, če priložite . Stena mora biti ravna, če pa jo premaknete ob steno, boste videli, da se stena premika, kot da je neenakomerna.

Vzroki in rešitve za škripce in udarce

Razlog, zakaj se to zgodi, je, da se "določanje zadetkov izvaja na osnovi kartografskega čipa". Ko izberete TilemapObject, se na mestu, kjer se nahaja zaznavanje zadetkov, prikaže zelena črta in vidite, da je to črta, narisana v enotah MapTip.

Torej, če je premikajoči se predmet na črti, ki je enakovredna točno enemu čipu zemljevida, bo ocenjen kot zadetek z enim kartografskim čipom. Če trčite ob mejo kartografskih čipov, bosta udarjena in ocenjena dva čipa zemljevida, tako da se bo moč odboja povečala.

Mislim, da je najboljši način za rešitev tega problema kombiniranje zaznavanja zadetkov s priloženimi mapchips. To naredite tako:

IzberiteTilemap Collider 2D "TilemapObject" z zaznavanjem zadetkov inšpektorja in označite "Uporabi v kompozitnem" iz .

Kot je navedeno v opozorilu, samo to nima učinka, zato izberite "Physics 2D -> Composite Collider 2D" iz "Dodaj komponento".

Togo telo 2D se doda skupaj s kompozitnim trkalnikom 2D.

To je nekoliko zmedeno, vendar mislim, da lahko potrdite, da je zelena črta na meji med mapchipi z zaznavanjem zadetkov izginila.

Ne želim, da se zemljevid ploščic premika, zato bom Rigidbody 2D pustil tip telesa komponente kot "statičen".

Zdaj zaženite igro in jo poskusite premakniti. Mislim, da tudi če se premikate diagonalno vzdolž stene, se ne bo ujela in se lahko premikate gladko brez neravnega gibanja.

Odpravite potiske znakov nazaj s sten

Vidite lahko, da če premaknete lik, da potisnete steno in se nato nehate premikati, se bo obnašal kot odboj od stene.

Če želite to rešiti,Rigidbody 2D izberite predmet znaka in iz komponente spremenite »zaznavanje trkov« v »Neprekinjeno«.

Razlika med "nezveznim" in "neprekinjenim" je naslednja.

Končnih

Zaznavanje trkov je mehanizem, ki razmišlja po selitvi. Gre za obliko, ki izvaja zaznavanje trkov iz stanja, kjer se premika in vgrajuje v steno. To je enostavno razumeti, če ga povežete s trampolini in gumo, toda bolj ko je vgrajen, bolj odbojna sila se bo povečala in odboj bo močnejši. Namesto tega se izračun izvede po selitvi, zato so stroški obdelave nizki.

Stalno

Obdeluje se med določanjem, kaj je na poti. Ugotovite, ali je med položajem pred in po premiku stena, Če je stena, bo presodila trk tam in se ustavila, tako da praktično ni odboja. Namesto tega se stroški obdelave nekoliko povečajo, ker je izračun vključen v sredino gibanja.

Ujet v kotu predmeta zemljevida

Glede na program in lokacijo so nekateri ujeti, nekateri pa ne, vzrok pa se ni bistveno spremenil. Mimogrede, to se dogaja s kotnimi vogali, kot je Box Collider 2D, in ne z zaobljenimi krogi.

Tudi če pride do takšnega skrivnostnega pojava, je dobro imeti zaobljene vogale trkalnika, da se izognemo oviram. Omejen je na Box Collider 2D, vendar ima 2D-komponenta predmeta znaka Box Collider 2D "polmer roba" in tam postavite vrednost. Če kot številsko enoto vnesete 1, se za velikost predmeta izvede zaokroževanje. To je odvisno od velikosti, vendar je dobro dati približno 0,1.

Mimogrede, sodba o zadetku se poveča le za velikost okroglosti, zato jo prilagodite, če je velika. Box Collider 2D ima gumb Collider Edit, ki vam omogoča, da spremenite velikost neposredno v pogledu s klikom na gumb. Ker je zunanja zelena črta dejansko zaznavanje zadetkov, nastavite velikost tako, da ni nenaravna.

Po tem zaženite igro, da se prepričate, da se ne opraska in prilagodite.