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)
- 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):
- 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.