Implementujte detekci přístupů pro každý typ čipu MapChip

Stránky aktualizovány :
Datum vytvoření stránky :

Ověřovací prostředí

Windows
  • Systém Windows 11
Editor jednoty
  • 2021.3.3f1
Vstupní systémový balíček
  • 1.3.0

Předpoklady pro tento tip

Následující nastavení byla provedena předem jako předpoklad pro popis tohoto tipu.

Jaké jsou předpoklady pro tento tip?

O půjčování mapových podkladů

Zpracováváme výpůjčky z následujících stránek.

Nejprve

Tentokrát jsou MapChipy umístěny v jedné TileMapě a je rozhodnuto, zda se provede určení přístupu podle typu umístěného MapTipu.

Vzhledem k tomu, že tento tip je do značné míry stejný jako jiný tip "Implementujte detekci zásahů pomocí tilemaps", Podrobné vysvětlení naleznete zde. Zde je vysvětlen pouze postup pro stejný obsah a jsou přidány pouze rozdíly.

Implementace chodících znaků

Nejprve připravte obrázek pohyblivého symbolu, který bude hráč ovládat k provedení operace detekce zásahu a přidejte jej do svého projektu. Tentokrát je velikost maptipu 32 pixelů, takže udělám obrázek stejné velikosti.

Tentokrát vynechám chůzi, protože postup bude dlouhý, pokud bude implementován. Chcete-li jej implementovat, přečtěte si následující tipy.

Vyberte obrázek, který jste přidali do projektu. Protože chceme jednotku přiřadit k mapovému čipu, nastavte "Počet pixelů na jednotku" na "32".

Po nakonfigurování klikněte na tlačítko "Použít" níže.

Jakmile je obrázek nastaven, přetáhněte obrázek do zobrazení a přidejte objekt.

Nastavte proces pohybu postavy. Přidejte skript a ponechte jej pojmenovaný Player .

Skript vypadá takto: Jedná se o jednoduchý pohybový proces, který pohybuje pohyblivým symbolem pomocí 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);
    }
  }
}

Skript, který vytvoříte, se připojí k objektu znaku.

Spusťte hru a zkontrolujte, zda se postava pohybuje pomocí klávesnice.

Příprava tipů na mapy

Připravte obrázek maptipu a přidejte ho do projektu. S rostoucím počtem mapových žetonů se nastavení stává problematickým, takže tentokrát jsme připravili pouze dva čtverce, jeden, který lze projít a druhý, který nemůže chodit.

Vyberte obrázky, které jste přidali do projektu, a nakonfigurujte nastavení pro MapChips. Další informace najdete v následujících tipech:

Po nakonfigurování klepněte na tlačítko Aplikovat a poté na tlačítko Editor pohyblivých symbolů.

Vydělte 32 pixely.

Vyberte kartu Paleta dlaždic a vytvořte paletu. Pokud nejsou k dispozici žádné karty, můžete je zobrazit z nabídky pomocí "Window > 2D -> Tile Palette". Název palety může být cokoliv, ale tady je to "MapChipPalette".

Protože ji uložíme do složky, vytvořte ve složce Scene novou složku "MapChipPalette" a určete ji.

Do projektu byla přidána složka MapChipPalette.

Dále přidáte mapové tipy na paletu. Přetáhněte rozdělený mapový tip na paletu.

Do palety byly přidány maptipy.

Vytvoření mapy

Nechte nastavení detekce zásahu stranou a nejprve vytvořte mapu. Detekci zásahu můžete nastavit později. Nejprve přidejte do hierarchie mapu dlaždic.

Po přidání vyberte Tilemap. V zobrazení se zobrazí mřížka.

Nejprve nastavte mapový čip, který se v pohledu nestane zdí.

Zatím jsem ji položil všude.

Dále umístěte kamenný maptip, který bude sloužit jako zeď.

Tentokrát nebyl žádný problém, ale pokud vaše postava bude za mapou, nastavte pořadí vrstev na číslo větší než Tilemap.

Samozřejmě, i když v tomto okamžiku přesunete hru, proklouznete zdí a půjdete.

Nastavení detekce zásahů MapChip

Odtud nastavíme, zda máme zadat úsudek o zásahu pro každý typ mapového čipu. Nejprve otevřete složku "MapChipPalette", kterou jste vytvořili při vytváření palety.

Uvnitř palety je sada maptipů, takže nejprve vyberte maptip, po kterém můžete chodit.

V nástroji Inspector nastavte hodnotu Collider Type na hodnotu None. Později přidáte do Tilemap nastavení detekce kolizí, ale jeho nastavením na "None" zabráníte kolizi tohoto mapového čipu.

Druhý kamenný maptip je nastaven na "Grid". Vzhledem k tomu, že se tentokrát nejedná o průhledný maptip, není problém se "sprite", ale pokud jej nastavíte na "sprite", nebude posuzován zasažením průhledné části obrázku.

To je vše, co je MapTip. Je to snadné, protože tentokrát jsou pouze dva, ale pokud máte velké množství mapových žetonů, musíte nastavit tolik.

Nastavení detekce kolizí

Odtud je to téměř stejné jako obsah "Implementujte detekci zásahů pomocí tilemap".

Nejprve proveďte potřebná nastavení pro detekci kolizí znaků. Přidejte "Physics 2D -> Circle Collider 2D" jako komponentu. Tentokrát je sprite kulatý, takže jsem z něj udělal kruh, ale vyberte prosím Box nebo Capsule podle tvaru.

Přidáme také "Fyzika 2D -> Rigidbody 2D".

Nastavte stupnici gravitace na 0, abyste zabránili pádu gravitace. Také zkontrolujte Z pro "Opravit rotaci", abyste zabránili otáčení pohyblivého symbolu.

Do pole Tilemap přidejte komponentu Tilemap -> Tilemap Collider 2D.

V pohledu můžete vidět, že kolem kamenného maptipu byla přidána zelená čára. To znamená, že detekce zásahu je nastavena pouze pro kameny. Můžete vidět, že nastavení typu urychlovače popisku mapy v paletě výše se projeví.

Zkuste spustit hru a jít ke zdi. Myslím, že se můžete ujistit, že se postava správně zastaví před zdí. Můžete vidět, že jej lze snadno implementovat bez psaní jakýchkoli programů souvisejících s detekcí zásahů.

Kombinace detekce zásahů pomocí čipu MapChip

Jak je uvedeno v níže uvedených tipech, když jej skutečně přesunete, chování detekce nárazu do zdi je trochu divné. Příčina a alternativní řešení jsou popsány v následujících tipech.

Kombinací části mapového čipu pro detekci zásahů však bude podivné chování opraveno a současně se sníží zatížení zpracování, takže to udělejme minimálně.

Nejprve zaškrtněte "Use in composite" v Tilemap Collider 2D.

V části Přidat komponentu vyberte Physics 2D -> Composite Collider 2D.

"Rigidbody 2D" bude také přidán, takže "Typ těla" na "Statický".

Pak si myslím, že můžete potvrdit, že úsudek o zásahu kamene není pro každý mapový čip a je kombinován.

Nyní spusťte hru a ujistěte se, že funguje správně.