Találatészlelés megvalósítása minden MapChip-típushoz
Ellenőrzési környezet
- Windows
-
- Windows 11 esetén
- Unity-szerkesztő
-
- 2021.3.3f1
- Bemeneti rendszercsomag
-
- 1.3.0
A tipp előfeltételei
A következő beállításokat előre elvégeztük a tipp leírásának előfeltételeként.
Mik ennek a tippnek az előfeltételei?
- Felülről lefelé irányuló 2D térkép létrehozása szabványos Unity-csempetérképek használatával
- Ütközéskezelés szabványos fizikával (2D)
- Lekérésészlelés megvalósítása csempetérképekkel
Térképanyagok kölcsönzése – ismertető
A következő webhelyekről kölcsönzött anyagokat dolgozzuk fel.
Először
Ezúttal a MapChipek egy TileMap-be kerülnek, és eldöntik, hogy az elhelyezett MapTip típusának megfelelően végrehajtják-e a találatok meghatározását.
Mivel ez a tipp nagyjából megegyezik egy másik tippel: "Találatészlelés megvalósítása csempetérképekkel", Kérjük, olvassa el ott a részletes magyarázatot. Itt csak az eljárást magyarázzuk el ugyanarra a tartalomra, és csak a különbségeket adjuk hozzá.
Gyalogos karakterek megvalósítása
Először készítsen elő egy sprite-képet, amelyet a lejátszó vezérel a találatészlelési művelet végrehajtásához, és adja hozzá a projekthez. Ezúttal a térképcsúcs mérete 32 pixel, így a képet azonos méretűre teszem.
Ezúttal kihagyom a gyalogos animációt, mert az eljárás hosszú lesz, ha végrehajtják. Ha meg szeretné valósítani, kérjük, olvassa el az alábbi tippeket.
Válassza ki a projekthez hozzáadott képet. Mivel az egységet a térkép chiphez szeretnénk igazítani, állítsa az "Egységenkénti pixelek száma" értéket "32" -re.
A konfigurálás után kattintson az alábbi "Alkalmaz" gombra.
A kép beállítása után húzza a képet a nézetbe, és adja hozzá az objektumot.
Állítsa be a karakter mozgási folyamatát. Adja hozzá a szkriptet, és hagyja meg a nevét Player
.
A szkript így néz ki: Ez egy egyszerű mozgási folyamat, amely a sprite-ot a billentyűzettel mozgatja.
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);
}
}
}
A létrehozott parancsfájl a karakterobjektumhoz lesz csatolva.
Futtassa a játékot, és ellenőrizze, hogy a karakter mozog-e a billentyűzettel.
Térképtippek előkészítése
Készítsen elő egy maptip képet, és adja hozzá a projekthez. A térképchipek számának növekedésével a beállítás problémássá válik, ezért ezúttal csak két négyzetet készítettünk, egyet lehet járni, egyet pedig nem lehet járni.
Válassza ki a projekthez hozzáadott képeket, és konfigurálja a MapChips beállításait. További információért tekintse meg az alábbi tippeket:
A konfigurálás után kattintson az Alkalmaz gombra, majd a Sprite Editor gombra.
Ossza el 32 képponttal.
Válassza a Mozaikpaletta lapot paletta létrehozásához. Ha nincsenek lapok, megjelenítheti azokat a menüből a "Window > 2D -> Tile Palette" segítségével. A paletta neve bármi lehet, de itt "MapChipPalette".
Mivel egy mappába mentjük, hozzon létre egy új "MapChipPalette" mappát a Scene mappában, és adja meg.
Egy MapChipPalette mappa lett hozzáadva a projekthez.
Ezután hozzáadja a MapTips elemet a palettához. Húzza az osztott leképezési tipp képét a palettára.
A térképtippek hozzá lettek adva a palettához.
Térkép létrehozása
Hagyja félre a találatészlelési beállításokat, és először hozza létre a térképet. A lekérésészlelést később is beállíthatja. Először adjon hozzá egy csempetérképet a hierarchiához.
A hozzáadás után válassza a Tilemap lehetőséget. A nézet egy rácsot jelenít meg.
Először állítson be egy térképchipet, amely nem válik falra a nézetben.
Egyelőre mindenütt elhelyeztem.
Ezután helyezze el a kőtérképcsúcsot, amely falként szolgál.
Ezúttal nem volt probléma, de ha a karaktered a térkép mögött lesz, állítsd a rétegsorrendet a Tilemapnél nagyobb számra.
Természetesen, még akkor is, ha ezen a ponton mozgatja a játékot, átcsúszik a falon és sétál.
MapChip találatészlelési beállítások
Innen beállítjuk, hogy az egyes térképchiptípusokhoz beírjunk-e találati ítéletet. Először nyissa meg a paletta létrehozásakor létrehozott "MapChipPalette" mappát.
A belső palettán van egy maptip készlet, ezért először válasszon ki egy térképtippet, amelyen sétálhat.
A Vizsgálóban állítsa az Ütköztető típusa értéket Nincs értékre. Később hozzáad egy ütközésészlelési beállítást a Tilemaphez, de ha "Nincs" értékre állítja, megakadályozza a térképchip ütközését.
A másik kőtérképtipp beállítása "Rács". Mivel ezúttal nem átlátszó térképtipp, nincs probléma a "sprite" -val, de ha "sprite" -ra állítja, akkor nem a kép átlátszó részének megütésével lesz megítélve.
Ez minden, ami a MapTip-hez tartozik. Könnyű, mert ezúttal csak kettő van belőlük, de ha sok térképzsetonod van, akkor ennyit kell beállítanod.
Ütközésérzékelési beállítások
Innentől kezdve szinte megegyezik a "Találatészlelés megvalósítása csempetérképpel" tartalommal.
Először végezze el a karakterütközés-észleléshez szükséges beállításokat. Adja hozzá a "Physics 2D -> Circle Collider 2D" összetevőt. Ezúttal a sprite kerek, ezért kört készítettem belőle, de kérjük, válassza ki a dobozt vagy a kapszulát az alaknak megfelelően.
Hozzáadjuk a "Fizika 2D -> merevtest 2D" -t is.
Állítsa a gravitációs skálát 0-ra, hogy megakadályozza a gravitáció leesését. Ellenőrizze a Z-t a "Fix forgatás" -nál is, hogy megakadályozza a sprite forgását.
A Tilemap esetében adja hozzá a Tilemap -> Tilemap Collider 2D összetevőt.
Láthatja, hogy egy zöld vonal lett hozzáadva a kőtérképcsúcs körül a nézetben. Ez azt jelenti, hogy a találatészlelés csak kövekre van beállítva. Láthatja, hogy a fenti palettán lévő térképcsúcs ütköztető típusának beállítása tükröződik.
Próbálja meg futtatni a játékot, és sétáljon a fal felé. Azt hiszem, meggyőződhet arról, hogy a karakter megfelelően megáll a fal előtt. Láthatja, hogy könnyen megvalósítható anélkül, hogy bármilyen találatészleléssel kapcsolatos programot írna.
A MapChip találatészlelés kombinálása
Amint azt az alábbi tippekben említettük, amikor ténylegesen mozgatja, a fali ütések észlelésének viselkedése kissé furcsa. Az okot és a megkerülő megoldást az alábbi tippek ismertetik.
A térképchip találatészlelési részének kombinálásával azonban a furcsa viselkedés kijavításra kerül, és a feldolgozási terhelés egyidejűleg csökken, ezért tegyük meg minimumon.
Először jelölje be a "Használat kompozitban" lehetőséget a Tilemap Collider 2D-ben.
Az Összetevő hozzáadása alatt válassza a Physics 2D -> Composite Collider 2D lehetőséget.
A "Rigidbody 2D" is hozzáadásra kerül, ezért a "Body Type" helyett "Static".
Akkor azt hiszem, megerősítheti, hogy a kő találati ítélete nem minden térképchipre vonatkozik, hanem kombinálva.
Most futtassa a játékot, és ellenőrizze, hogy megfelelően működik-e.