Oversiktstype Minikartopplæring for Unity

Spillnivåer kommer i mange former og former, fra enkle 2D-nivåer til mer komplekse 3D-nivåer, med store rom og korridorer.

Minimap er et miniatyrkart som vanligvis plasseres i hjørnet av skjermen og brukes ofte i videospill for å hjelpe spillerne med å navigere på spillnivået.

I denne opplæringen skal jeg vise hvordan du lager et sirkulært minikart i Unity, ved å bruke UI-lerret.

Trinn

For spillerkontrolleren kommer jeg til å bruke denne FPS-kontrolleren.

For å lage et minikart, følg trinnene nedenfor:

  • Åpne scenen med ditt spillnivå
  • Opprett et nytt UI Canvas, hvis du ikke har noe (GameObject -> UI -> Canvas)
  • Lag et nytt bilde ved å høyreklikke på Canvas -> UI -> Image
  • Tilordne spriten nedenfor til bildet (høyreklikk for å laste ned bildet)

sirkulær minikart kantdesign

  • Endre bildejusteringen øverst til venstre og pivoten til (0, 1)

  • Lag et nytt råbilde ved å klikke på Canvas -> UI -> råbilde (sørg for at råbildet er plassert foran radarbildet i hierarki, så det gjengis bak).

  • Lag et nytt kamera, navngi det "Minimap_Camera", plasser det over spilleren og pek det nedover
  • Fjern Audio Listener fra "Minimap_Camera"
  • Opprett en ny gjengivelsestekstur (I prosjektvisning Opprett -> Gjengivelsestekstur) og navngi den "MinimapTexture"
  • Tilordne nyopprettet gjengivelsestekstur til "Minimap_Camera" måltekstur

  • Tilordne "MinimapTexture" til Raw Image Texture

Nå må vi legge til en sprite-maske, så bildet er pent beskåret:

  • Dupliser radarbildet
  • Endre teksturen til det dupliserte bildet til spriten nedenfor (høyreklikk for å laste ned bildet):

grå sirkel gjennomsiktig

  • Legg til maskekomponent til maskebildet

  • Flytt råbildet med gjengivelsestekstur inne i maskebildet

Det endelige bildet skal beskjæres nå:

Som du kan se, viser minimap-kameraet kartet som det er, inkludert spilleren og eventuelle dynamiske objekter, men det er ikke det vi vil, vi skal bare vise kartet uten noen dynamiske objekter.

  • Ta et skjermbilde av toppvisningen av kartet (før du gjør det, deaktiver eventuelle dynamiske objekter som spillere, fiender osv.)

  • Lag en ny Quad (GameObject -> 3D Object -> Quad) og plasser den under kartet, slik:

  • Tilordne skjermbildet til Quad og endre materialet Shader til "Unlit/Texture"
  • Sørg for at skjermbildeposisjonen på Quad-en samsvarer med kartet:

  • Endre minimap Quad-lag til "UI"
  • I "Minimap_Camera" endres Culling Mask til "UI"
  • Lag en annen Quad og flytt den inn i "Minimap_Camera"-objektet, tilordne bildet nedenfor til det:

  • Endre Shader på pil Quad til "Unlit/Transparent"

  • Endre pilen Quad-lag til "UI"

Her er det endelige resultatet:

  • Lag et nytt skript, navngi det "SC_MinimapCamera" og lim inn koden nedenfor i det:

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);
    }
}
  • Fest SC_MinimapCamera-skriptet til "Minimap_Camera"-objektet.
  • Tilordne spilleren din til Target-variabelen i SC_MinimapCamera.

Minikartet er nå klart, for å bruke det er det bare å gå rundt nivået og observere posisjonsendringen.

Sharp Coder Videospiller

Foreslåtte artikler
Opprette et brukergrensesnitt for vinnerskjerm i Unity
Velg de riktige sverdmodellene for Unity-prosjektet ditt
Kraften til plassholderteksturer for prototyping i enhet
Modular Courtyard - Et solid grunnlag for virtuelle miljøer
Må-ha-utvidelser for å forbedre nivådesign i enhet
Lag Object Glow Tutorial for Unity
Delt skjerm samme PC flerspilleropplæring for Unity