Ota osumien tunnistus käyttöön kullekin MapChip-tyypille

Sivu päivitetty :
Sivun luontipäivämäärä :

Varmennusympäristö

Windows
  • Windows 11
Unity-editori
  • 2021.3.3F1
Syöttöjärjestelmän paketti
  • 1.3.0

Tämän vinkin edellytykset

Seuraavat asetukset on tehty etukäteen tämän vinkin kuvauksen lähtökohtana.

Mitkä ovat tämän vinkin edellytykset?

Kartta-aineistojen lainaamisesta

Käsittelemme lainattuja seuraavilta sivustoilta.

Alun perin

Tällä kertaa MapChipit sijoitetaan yhteen TileMapiin, ja päätetään, määritetäänkö osuma sijoitetun MapTip-tyypin mukaan.

Koska tämä vinkki on suurelta osin sama kuin toinen Vinkki "Ota osumien tunnistus käyttöön laattakartoilla", Katso sieltä yksityiskohtainen selitys. Tässä selitetään vain menettely samalle sisällölle ja vain erot lisätään.

Kävelymerkkien toteutus

Valmistele ensin sprite-kuva, jota soitin ohjaa suorittaakseen osuman tunnistustoiminnon, ja lisää se projektiisi. Tällä kertaa karttavihjeen koko on 32 pikseliä, joten teen kuvasta samankokoisen.

Jätän kävelyanimaation pois tällä kertaa, koska menettely on pitkä, jos se toteutetaan. Jos haluat toteuttaa sen, tutustu seuraaviin vinkkeihin.

Valitse kuva, jonka lisäsit projektiin. Koska haluamme sovittaa yksikön karttasiruun, aseta "Pikselien määrä yksikköä kohti" -asetukseksi "32".

Kun olet määrittänyt, napsauta alla olevaa Käytä-painiketta.

Kun kuva on asetettu, pudota kuva näkymään ja lisää objekti.

Aseta hahmon liikkumisprosessi. Lisää komentosarja ja jätä sen nimeksi Player .

Skripti näyttää tältä: Tämä on yksinkertainen liikeprosessi, joka liikuttaa spritea näppäimistöllä.

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

Luomasi komentosarja liitetään merkkiobjektiin.

Suorita peli ja tarkista, liikkuuko hahmo näppäimistöllä.

Karttavihjeiden valmistelu

Valmistele karttavihjeen kuva ja lisää se projektiisi. Karttalastujen määrän kasvaessa asetus muuttuu hankalaksi, joten tällä kertaa olemme valmistelleet vain kaksi ruutua, yhden voi kävellä ja toisen ei voi kävellä.

Valitse projektiin lisäämäsi kuvat ja määritä MapChips-asetukset. Katso lisätietoja seuraavista vinkeistä:

Kun olet määrittänyt, napsauta käyttää -painiketta ja sitten Sprite Editor -painiketta.

Jaa 32 pikselillä.

Luo paletti valitsemalla Ruutupaletti-välilehti. Jos välilehtiä ei ole, voit näyttää ne valikosta "Ikkuna > 2D -> laattapaletti". Paletin nimi voi olla mikä tahansa, mutta tässä se on "MapChipPalette".

Koska tallennamme sen kansioon, luo uusi "MapChipPalette" -kansio Scene-kansioon ja määritä se.

Projektiin on lisätty MapChipPalette-kansio.

Seuraavaksi lisäät karttavihjeet palettiin. Vedä ja pudota jaetun karttavihjeen kuva palettiin.

MapTips on lisätty palettiin.

Luo kartta

Jätä osumien tunnistusasetukset sivuun ja luo ensin kartta. Voit määrittää osumien tunnistuksen myöhemmin. Lisää ensin hierarkiaan ruutukartta.

Kun olet lisännyt, valitse Tilemap. Näkymässä näkyy ruudukko.

Aseta ensin karttasiru, josta ei tule seinää näkymässä.

Toistaiseksi laitoin sen kaikkialle.

Aseta seuraavaksi kivikarttakärki, joka toimii seinänä.

Tällä kertaa ongelmaa ei ollut, mutta jos hahmosi on kartan takana, aseta tasojärjestys suuremmaksi numeroksi kuin Tilemap.

Tietenkin, vaikka siirrät peliä tässä vaiheessa, liukastut seinän läpi ja kävelet.

MapChip-osumien tunnistusasetukset

Tästä eteenpäin määritämme, kirjoitetaanko osumatuomio kullekin karttasirutyypille. Avaa ensin "MapChipPalette"-kansio, jonka loit luodessasi paletin.

Sisällä olevassa paletissa on karttavihje, joten valitse ensin karttavihje, jonka päällä voit kävellä.

Määritä inspektorissa Collider Type -arvoksi None. Myöhemmin lisäät törmäystunnistusasetuksen Tilemapiin, mutta sen asettaminen arvoon "Ei mitään" estää tätä karttasirua törmäämästä.

Toinen kivikarttavihje on asetettu "Ruudukko". Koska se ei ole tällä kertaa läpinäkyvä karttavihje, "sprite": n kanssa ei ole ongelmaa, mutta jos asetat sen "sprite", sitä ei arvioida lyömällä kuvan läpinäkyvää osaa.

Siinä kaikki, mitä MapTipissä on. Se on helppoa, koska niitä on tällä kertaa vain kaksi, mutta jos sinulla on suuri määrä karttasiruja, sinun on asetettava niin paljon.

Törmäystunnistuksen asetukset

Tästä eteenpäin se on melkein sama kuin "Toteuta osumien havaitseminen ruutukartalla" -sisältö.

Tee ensin tarvittavat asetukset merkkien törmäyksen havaitsemiseksi. Lisää komponentiksi "Physics 2D -> Circle Collider 2D". Tällä kertaa sprite on pyöreä, joten tein siitä ympyrän, mutta valitse laatikko tai kapseli muodon mukaan.

Lisäämme myös "Physics 2D -> Rigidbody 2D".

Aseta painovoima-asteikko arvoon 0, jotta painovoima ei putoa alas. Tarkista myös Z-kohdasta "Fix rotation", jotta sprite ei pyöri.

Lisää Tilemap-kohtaan Tilemap -> Tilemap Collider 2D -komponentti.

Näet, että näkymän kivisen karttakärjen ympärille on lisätty vihreä viiva. Tämä tarkoittaa, että osuman tunnistus on asetettu vain kiville. Voit nähdä, että yllä olevan paletin karttavihjeen törmäytintyyppiasetus heijastuu.

Yritä juosta peliä ja kävellä seinää kohti. Mielestäni voit varmistaa, että hahmo pysähtyy seinän eteen kunnolla. Voit nähdä, että se voidaan helposti toteuttaa kirjoittamatta osumien havaitsemiseen liittyviä ohjelmia.

MapChip-osumien tunnistuksen yhdistäminen

Kuten alla olevissa vinkeissä mainittiin, kun siirrät sitä, seinäosumien havaitsemisen käyttäytyminen on hieman outoa. Syy ja kiertotapa on kuvattu alla olevissa vinkeissä.

Yhdistämällä karttasirun osumantunnistusosa outo käyttäytyminen kuitenkin korjataan ja käsittelykuorma pienenee samanaikaisesti, joten tehdään se vähintään.

Valitse ensin "Käytä komposiitissa" Tilemap Collider 2D:ssä.

Valitse Lisää komponentti -kohdassa Physics 2D -> Composite Collider 2D.

"Rigidbody 2D" lisätään myös, joten tee "Body Type" arvoksi "Staattinen".

Sitten luulen, että voit vahvistaa, että kiven osumatuomio ei koske jokaista karttasirua ja se yhdistetään.

Suorita nyt peli ja varmista, että se toimii oikein.