Implementujte detekciu zásahov pre každý typ MapChip

Stránka aktualizovaná :
Dátum vytvorenia strany :

Prostredie overovania

Windows
  • Windows 11
Editor jednoty
  • 2021.3.3f1
Vstupný systémový balík
  • 1.3.0

Predpoklady pre tento tip

Nasledujúce nastavenia boli vykonané vopred ako predpoklad pre popis tohto tipu.

Aké sú predpoklady pre tento tip?

O požičiavaní mapových materiálov

Spracované požičané z nasledujúcich stránok.

Najskôr

Tentokrát sú MapChips umiestnené v jednom TileMap a rozhoduje sa, či sa vykoná určenie zásahu podľa typu umiestneného MapTipu.

Keďže tento tip je do značnej miery rovnaký ako iný tip "Implementujte detekciu zásahov pomocou dlaždíc", Podrobné vysvetlenie nájdete tu. Tu je pre rovnaký obsah vysvetlený iba postup a pridávajú sa iba rozdiely.

Implementácia chodiacich znakov

Najprv pripravte sprite obrázok, ktorý bude hráč ovládať, aby vykonal operáciu detekcie zásahov a pridal ho do svojho projektu. Tentokrát je veľkosť maptipu 32 pixelov, takže obrázok urobím v rovnakej veľkosti.

Tentokrát vynechám animáciu chôdze, pretože postup bude dlhý, ak bude implementovaný. Ak ho chcete implementovať, pozrite si nasledujúce tipy.

Vyberte obrázok, ktorý ste pridali do projektu. Keďže chceme jednotku priradiť k mapovému čipu, nastavte "Počet pixelov na jednotku" na "32".

Po nakonfigurovaní kliknite na tlačidlo "Použiť" nižšie.

Po nastavení obrázka presuňte obrázok do zobrazenia a pridajte objekt.

Nastavte proces pohybu postavy. Pridajte skript a nechajte ho pomenovaný Player .

Skript vyzerá takto: Jedná sa o jednoduchý pohybový proces, ktorý pohybuje sprite pomocou klávesnice.

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

Vytvorený skript sa pripojí k objektu znaku.

Spustite hru a skontrolujte, či sa postava pohybuje pomocou klávesnice.

Príprava MapTips

Pripravte si obrázok mapového tipu a pridajte ho do projektu. Ako sa počet mapových čipov zvyšuje, nastavenie sa stáva problematickým, takže tentokrát sme pripravili iba dva štvorce, jeden, ktorý sa dá chodiť a jeden, ktorý sa nedá chodiť.

Vyberte obrázky, ktoré ste pridali do projektu, a nakonfigurujte nastavenia pre MapChips. Ďalšie informácie nájdete v nasledujúcich tipoch:

Po nakonfigurovaní kliknite na tlačidlo Použiť a potom na tlačidlo Sprite Editor.

Vydeľte 32 pixelmi.

Vyberte kartu palety dlaždíc a vytvorte paletu. Ak nie sú k dispozícii žiadne karty, môžete ich zobraziť z ponuky pomocou "Window > 2D -> Tile Palette". Názov palety môže byť čokoľvek, ale tu je to "MapChipPalette".

Keďže ho uložíme do priečinka, vytvorte nový priečinok "MapChipPalette" v priečinku Scene a zadajte ho.

Do projektu bol pridaný priečinok MapChipPalette.

Ďalej do palety pridáte MapTipy. Presuňte rozdelený obrázok mapového tipu na paletu.

MapTipy boli pridané do palety.

Vytvorenie mapy

Nechajte nastavenia detekcie prístupov stranou a najskôr vytvorte mapu. Detekciu prístupov môžete nastaviť neskôr. Najprv pridajte dlaždicovú mapu do hierarchie.

Po pridaní vyberte položku Tilemap. V zobrazení sa zobrazí mriežka.

Najprv nastavte mapchip, ktorý sa nestane stenou v pohľade.

Zatiaľ som to položil všade.

Potom umiestnite kamenný maptip, ktorý bude slúžiť ako stena.

Tentokrát nebol problém, ale ak bude vaša postava za mapou, nastavte poradie vrstiev na číslo väčšie ako Tilemap.

Samozrejme, aj keď hru v tomto bode presuniete, prekĺznete cez stenu a budete chodiť.

Nastavenia detekcie zásahov MapChip

Odtiaľ nastavíme, či zadáme hit judgment pre každý typ mapového čipu. Najprv otvorte priečinok "MapChipPalette", ktorý ste vytvorili pri vytváraní palety.

Vo vnútri palety je nastavený mapový tip, takže najprv vyberte maptip, po ktorom môžete chodiť.

V časti Inšpektor nastavte hodnotu Typ urýchľovača na možnosť Žiadny. Neskôr pridáte nastavenie detekcie kolízií do Tilemap, ale jeho nastavenie na "Žiadne" zabráni kolízii tohto mapového čipu.

Druhý kamenný maptip je nastavený na "Mriežka". Keďže tentokrát nejde o priehľadný maptip, s "sprite" nie je problém, ale ak ho nastavíte na "sprite", nebude posudzovaný podľa zásahu do priehľadnej časti obrázka.

To je všetko, čo MapTip má. Je to jednoduché, pretože tentoraz sú len dva, ale ak máte veľké množstvo mapových čipov, musíte to nastaviť.

Nastavenia detekcie kolízií

Odtiaľ je to takmer rovnaké ako obsah "Implementovať detekciu zásahov pomocou dlaždice".

Najprv vykonajte potrebné nastavenia na detekciu kolízie znakov. Pridajte "Physics 2D -> Circle Collider 2D" ako komponent. Tentokrát je sprite okrúhly, takže som z neho urobil kruh, ale vyberte prosím Box alebo Kapsula podľa tvaru.

Pridáme tiež "Fyzika 2D -> Rigidbody 2D".

Nastavte gravitačnú stupnicu na 0, aby ste zabránili pádu gravitácie. Skontrolujte tiež Z pre "Opraviť rotáciu", aby ste zabránili otáčaniu sprite.

Pre Tilemap pridajte komponent Tilemap -> Tilemap Collider 2D.

Vo výhľade môžete vidieť, že okolo kamenného hrotu mapy bola pridaná zelená čiara. To znamená, že detekcia zásahov je nastavená len pre kamene. Môžete vidieť, že sa odráža nastavenie typu urýchľovača mapového tipu na palete vyššie.

Skúste spustiť hru a kráčať smerom k stene. Myslím, že sa môžete uistiť, že postava sa správne zastaví pred stenou. Môžete vidieť, že sa dá ľahko implementovať bez písania akýchkoľvek programov súvisiacich s detekciou zásahov.

Kombinácia detekcie zásahov MapChip

Ako je uvedené v tipoch nižšie, keď ho skutočne presuniete, správanie detekcie zásahov do steny je trochu zvláštne. Príčina a alternatívne riešenie sú popísané v tipoch nižšie.

Kombináciou časti mapového čipu na detekciu zásahov sa však podivné správanie napraví a zároveň sa zníži zaťaženie spracovania, takže to urobme minimálne.

Najprv skontrolujte "Použitie v kompozite" v Tilemap Collider 2D.

V časti Add Component (Pridať súčasť) vyberte položku Physics 2D -> Composite Collider 2D (Fyzika 2D kompozitný urýchľovač.

Pridá sa aj "Rigidbody 2D", takže "Typ karosérie" zmeňte na "Statický".

Potom si myslím, že môžete potvrdiť, že úsudok kameňa nie je pre každý mapový čip a je kombinovaný.

Teraz spustite hru a uistite sa, že funguje správne.