Überblicksartiges Minikarten-Tutorial für Unity

Spiellevel gibt es in vielen Formen und Formen, von einfachen 2D-Levels bis hin zu komplexeren 3D-Levels mit riesigen Räumen und Korridoren.

Minimap ist eine Miniaturkarte, die normalerweise in der Ecke des Bildschirms platziert wird und häufig in Videospielen verwendet wird, um den Spielern die Navigation durch das Spiellevel zu erleichtern.

In diesem Tutorial zeige ich, wie man mit UI-Canvas eine kreisförmige Minikarte in Unity erstellt.

Schritte

Als Player-Controller verwende ich diesen FPS-Controller.

Um eine Minikarte zu erstellen, führen Sie die folgenden Schritte aus:

  • Öffnen Sie die Szene mit Ihrem Spiellevel
  • Erstellen Sie einen neuen UI-Canvas, falls Sie noch keinen haben (GameObject -> UI -> Canvas)
  • Erstellen Sie ein neues Bild, indem Sie mit der rechten Maustaste auf Canvas -> UI -> Image klicken
  • Weisen Sie dem Bild das Sprite unten zu (Rechtsklick, um das Bild herunterzuladen)

Kreisförmiges Minikarten-Randdesign

  • Ändern Sie die Bildausrichtung nach links oben und den Drehpunkt auf (0, 1).

  • Erstellen Sie ein neues Rohbild, indem Sie auf Leinwand -> Benutzeroberfläche -> Rohbild klicken (Stellen Sie sicher, dass das Rohbild in der Hierarchie vor dem Radarbild platziert ist, damit es dahinter gerendert wird).

  • Erstellen Sie eine neue Kamera, nennen Sie sie "Minimap_Camera", platzieren Sie sie über Ihrem Player und richten Sie sie dann nach unten
  • Entfernen Sie Audio Listener von "Minimap_Camera"
  • Erstellen Sie eine neue Rendertextur (In der Projektansicht Erstellen -> Rendertextur) und benennen Sie sie "MinimapTexture"
  • Weisen Sie die neu erstellte Rendertextur der Zieltextur "Minimap_Camera" zu

  • Weisen Sie "MinimapTexture" der Rohbildtextur zu

Jetzt müssen wir eine Sprite-Maske hinzufügen, damit das Bild schön zugeschnitten ist:

  • Duplizieren Sie das Radarbild
  • Ändern Sie die Textur des duplizierten Bildes in das folgende Sprite (klicken Sie mit der rechten Maustaste, um das Bild herunterzuladen):

grauer Kreis transparent

  • Fügen Sie dem Maskenbild eine Maskenkomponente hinzu

  • Verschieben Sie das Rohbild mit der Rendertextur in das Maskenbild

Das endgültige Bild sollte jetzt zugeschnitten sein:

Wie Sie sehen können, zeigt die Minikartenkamera die Karte so an, wie sie ist, einschließlich des Spielers und aller dynamischen Objekte. Aber das ist nicht das, was wir wollen, sondern nur die Karte ohne dynamische Objekte.

  • Machen Sie einen Screenshot der Draufsicht der Karte (Deaktivieren Sie vorher alle dynamischen Objekte wie Spieler, Feinde usw.)

  • Erstellen Sie ein neues Quad (GameObject -> 3D Object -> Quad) und platzieren Sie es wie folgt unter der Karte:

  • Weisen Sie den Screenshot dem Quad zu und ändern Sie den Material-Shader auf "Unlit/Texture"
  • Stellen Sie sicher, dass die Screenshot-Position auf dem Quad mit der Karte übereinstimmt:

  • Ändern Sie die Quad-Ebene der Minikarte in "UI"
  • Ändern Sie in "Minimap_Camera" „Culling Mask“ in „ "UI"
  • Erstellen Sie ein weiteres Quad, verschieben Sie es in das "Minimap_Camera"-Objekt und weisen Sie ihm das folgende Bild zu:

  • Ändern Sie den Shader auf dem Pfeil Quad zu "Unlit/Transparent"

  • Ändern Sie die Pfeil-Quad-Ebene in "UI"

Hier ist das Endergebnis:

  • Erstellen ein neues Skript, nennen Sie es "SC_MinimapCamera" und fügen Sie den folgenden Code ein:

SC_MinimapCamera.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SC_MinimapCamera : MonoBehaviour
{
    public Transform target;

    float defaultPosY;

    // Start is called before the first frame update
    void Start()
    {
        defaultPosY = transform.position.y;
    }

    // Update is called once per frame
    void Update()
    {
        // Apply position
        transform.position = new Vector3(target.position.x, defaultPosY, target.position.z);
        // Apply rotation
        transform.rotation = Quaternion.Euler(90, target.eulerAngles.y, 0);
    }
}
  • Hängen Sie das SC_MinimapCamera-Skript an das "Minimap_Camera"-Objekt an.
  • Weisen Sie Ihren Player der Target-Variablen in SC_MinimapCamera zu.

Die Minikarte ist jetzt fertig. Um sie zu verwenden, gehen Sie einfach durch das Level und beobachten Sie die Positionsänderung.

Sharp Coder Videoplayer

Empfohlene Artikel
Auswahl der richtigen Schwertmodelle für Ihr Unity-Projekt
Leistungsfähigkeit von Platzhaltertexturen für die Prototypenerstellung in Unity
Modularer Innenhof – eine solide Grundlage für virtuelle Umgebungen
Split-Screen-Multiplayer-Tutorial für Unity auf demselben PC
Hauptmenü-Tutorial für Unity
Erstellen eines einfachen Grass-Shaders in Unity
Erstellen einer Winner-Screen-Benutzeroberfläche in Unity