Implementieren Sie die Treffererkennung für jeden MapChip-Typ
Verifizierungsumgebung
- Fenster
-
- Windows 11
- Unity-Editor
-
- 2021.3.3f1
- Eingabesystem-Paket
-
- 1.3.0
Voraussetzungen für diesen Tipp
Die folgenden Einstellungen wurden im Vorfeld als Prämisse für die Beschreibung dieses Tipps vorgenommen.
Was sind die Voraussetzungen für diesen Tipp?
- Erstellen einer Top-Down-2D-Karte mit standardmäßigen Unity-Tilemaps
- Kollisionsbehandlung mit Standardphysik (2D)
- Implementieren Sie die Treffererkennung mit Tilemaps
Informationen zum Ausleihen von Kartenmaterialien
Wir verarbeiten Leihgaben von den folgenden Seiten.
Zuerst
Dieses Mal werden MapChips in einer TileMap platziert, und es wird entschieden, ob eine Trefferbestimmung entsprechend dem Typ des platzierten MapTips durchgeführt werden soll.
Da dieser Tipp weitestgehend mit einem anderen Tipp "Treffererkennung mit Tilemaps implementieren" identisch ist, Dort finden Sie eine detaillierte Erklärung. Hier wird nur die Vorgehensweise für den gleichen Inhalt erläutert und nur die Unterschiede hinzugefügt.
Implementierung von Lauffiguren
Bereiten Sie zunächst ein Sprite-Bild vor, das der Spieler steuert, um die Treffererkennung durchzuführen, und fügen Sie es Ihrem Projekt hinzu. Diesmal beträgt die Größe des Maptips 32 Pixel, daher werde ich das Bild auf die gleiche Größe bringen.
Ich werde die Gehanimation dieses Mal weglassen, da die Prozedur langwierig sein wird, wenn sie implementiert wird. Wenn Sie es umsetzen möchten, beachten Sie bitte die folgenden Tipps.
Wählen Sie das Bild aus, das Sie Ihrem Projekt hinzugefügt haben. Da wir die Einheit mit dem Kartenchip abgleichen möchten, setzen Sie die "Anzahl der Pixel pro Einheit" auf "32".
Klicken Sie nach der Konfiguration unten auf die Schaltfläche "Übernehmen".
Sobald das Bild festgelegt ist, legen Sie das Bild in der Ansicht ab und fügen Sie das Objekt hinzu.
Legen Sie den Bewegungsablauf der Figur fest. Fügen Sie das Skript hinzu und lassen Sie es Player
.
Das Skript sieht wie folgt aus: Dies ist ein einfacher Bewegungsvorgang, bei dem die Figur mit der Tastatur bewegt wird.
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);
}
}
}
Das von Ihnen erstellte Skript wird an das Zeichenobjekt angehängt.
Führen Sie das Spiel aus und prüfen Sie, ob sich der Charakter mit der Tastatur bewegt.
Vorbereiten von MapTips
Bereiten Sie ein Maptip-Bild vor, und fügen Sie es Ihrem Projekt hinzu. Mit zunehmender Anzahl der Kartenchips wird das Einstellen mühsam, daher haben wir dieses Mal nur zwei Felder vorbereitet, eines, das begehbar ist, und eines, das nicht begehbar ist.
Wählen Sie die Bilder aus, die Sie Ihrem Projekt hinzugefügt haben, und konfigurieren Sie die Einstellungen für MapChips. Weitere Informationen finden Sie in den folgenden Tipps:
Klicken Sie nach der Konfiguration auf die Schaltfläche Anwenden und dann auf die Schaltfläche Sprite-Editor.
Teilen Sie durch 32 Pixel.
Wählen Sie die Registerkarte Kachelpalette aus, um eine Palette zu erstellen. Wenn keine Registerkarten vorhanden sind, können Sie diese über das Menü mit "Fenster > 2D -> Kachelpalette" anzeigen. Der Palettenname kann beliebig sein, aber hier ist es "MapChipPalette".
Da wir es in einem Ordner speichern werden, erstellen Sie einen neuen Ordner "MapChipPalette" im Ordner "Scene" und geben Sie ihn an.
Dem Projekt wurde ein MapChipPalette-Ordner hinzugefügt.
Als Nächstes fügen Sie der Palette MapTips hinzu. Ziehen Sie das geteilte Maptip-Bild per Drag & Drop auf die Palette.
MapTips wurden der Palette hinzugefügt.
Erstellen einer Karte
Lassen Sie die Einstellungen für die Treffererkennung beiseite und erstellen Sie zuerst die Karte. Sie können die Treffererkennung später einrichten. Fügen Sie zunächst eine Kachelkarte zu Ihrer Hierarchie hinzu.
Wählen Sie nach dem Hinzufügen Tilemap aus. In der Ansicht wird ein Raster angezeigt.
Legen Sie zunächst einen Kartenchip fest, der in der Ansicht nicht zu einer Wand wird.
Vorläufig habe ich es überall hingelegt.
Platzieren Sie als Nächstes die steinerne Maptip, die als Wand dienen soll.
Diesmal gab es kein Problem, aber wenn sich Ihr Charakter hinter der Karte befindet, stellen Sie die Ebenenreihenfolge auf eine Zahl ein, die größer als Tilemap ist.
Selbst wenn du das Spiel an dieser Stelle bewegst, wirst du natürlich durch die Wand schlüpfen und gehen.
Einstellungen für die MapChip-Treffererkennung
Von hier aus legen wir fest, ob wir für jede Art von Kartenchip ein Trefferurteil eingeben möchten. Öffnen Sie zunächst den Ordner "MapChipPalette", den Sie beim Erstellen der Palette erstellt haben.
In der Palette befindet sich ein Maptip-Set, also wählen Sie zuerst einen Maptip aus, auf dem Sie laufen können.
Legen Sie im Bereich "Informationen" den Wert für den Collider-Typ auf "Keine" fest. Später fügen Sie Tilemap eine Einstellung für die Kollisionserkennung hinzu, aber wenn Sie sie auf "Keine" setzen, wird verhindert, dass dieser Mapchip kollidiert.
Der andere Stein-Maptip ist auf "Raster" eingestellt. Da es sich diesmal nicht um einen transparenten Maptip handelt, gibt es kein Problem mit "Sprite", aber wenn Sie es auf "Sprite" setzen, wird es nicht durch Treffen auf den transparenten Teil des Bildes beurteilt.
Das ist alles, was es zu MapTip gibt. Es ist einfach, weil es diesmal nur zwei davon gibt, aber wenn Sie eine große Anzahl von Kartenchips haben, müssen Sie so viel einstellen.
Einstellungen für die Kollisionserkennung
Von hier aus ist es fast identisch mit dem Inhalt von "Treffererkennung mit Tilemap implementieren".
Nehmen Sie zunächst die erforderlichen Einstellungen für die Erkennung von Zeichenkollisionen vor. Fügen Sie "Physics 2D -> Circle Collider 2D" als Komponente hinzu. Dieses Mal ist das Sprite rund, also habe ich es zu einem Kreis gemacht, aber bitte wählen Sie Box oder Kapsel entsprechend der Form.
Wir werden auch "Physics 2D -> Rigidbody 2D" hinzufügen.
Stellen Sie die Schwerkraftskala auf 0, um zu verhindern, dass die Schwerkraft herunterfällt. Aktivieren Sie außerdem Z für "Fix rotation", um zu verhindern, dass sich das Sprite dreht.
Fügen Sie für Tilemap die Komponente Tilemap -> Tilemap Collider 2D hinzu.
Sie können sehen, dass in der Ansicht eine grüne Linie um den steinernen Maptip hinzugefügt wurde. Das bedeutet, dass die Treffererkennung nur für Steine eingestellt ist. Sie können sehen, dass die Einstellung des Collider-Typs des Maptips in der obigen Palette widergespiegelt wird.
Versuchen Sie, das Spiel zu starten und auf die Wand zuzugehen. Ich denke, man kann dafür sorgen, dass der Charakter richtig vor der Wand stehen bleibt. Sie können sehen, dass es leicht implementiert werden kann, ohne Programme im Zusammenhang mit der Treffererkennung zu schreiben.
Kombination der MapChip-Treffererkennung
Wie in den folgenden Tipps erwähnt, ist das Verhalten der Wandschlagerkennung etwas seltsam, wenn Sie es tatsächlich bewegen. Die Ursache und die Problemumgehung werden in den folgenden Tipps beschrieben.
Durch die Kombination des Treffererkennungsteils des Kartenchips wird das seltsame Verhalten jedoch korrigiert und gleichzeitig die Verarbeitungslast reduziert, also lassen Sie es uns zumindest tun.
Aktivieren Sie zunächst "In Composite verwenden" in Tilemap Collider 2D.
Wählen Sie unter "Komponente hinzufügen" die Option "Physics 2D -> Composite Collider 2D" aus.
"Rigidbody 2D" wird ebenfalls hinzugefügt, also machen Sie "Body Type" zu "Static".
Dann denke ich, dass Sie bestätigen können, dass das Trefferurteil des Steins nicht für jeden Kartenchip gilt und kombiniert wird.
Führen Sie nun das Spiel aus und stellen Sie sicher, dass es ordnungsgemäß funktioniert.