Oprettelse af et portalsystem i Unity

Portaler er en populær funktion i mange spil, som gør det muligt for spillere at teleportere mellem forskellige steder uden problemer. I denne øvelse vil vi udforske forskellige teknikker til at skabe et portalsystem i Unity. Vi vil dække grundlæggende teleportering, bruge gengivelsesteksturer til visuelle portaler og implementere portalmekanik, der opretholder spillerorientering og momentum.

Opsætning af projektet

For at komme i gang, lad os opsætte et grundlæggende Unity-projekt:

  1. Opret et nyt Unity projekt.
  2. Tilføj en ny mappe ved navn Scripts for at organisere vores scripts.
  3. Opret en ny 3D-scene med nogle få grundlæggende objekter, inklusive en spillerfigur og to portalobjekter.

Grundlæggende teleportering

Den enkleste form for et portalsystem er grundlæggende teleportering, hvor spilleren øjeblikkeligt bevæger sig fra et sted til et andet.

Oprettelse af teleportationsscriptet

using UnityEngine;

public class TeleportationPortal : MonoBehaviour
{
    public Transform destination;

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            other.transform.position = destination.position;
            other.transform.rotation = destination.rotation;
        }
    }
}

Vedhæft dette script til begge portalobjekter og tildel destinationen til den tilsvarende portal.

Brug af gengivelsesteksturer til visuelle portaler

For at skabe et mere fordybende portalsystem kan vi bruge gengivelsesteksturer til at vise, hvad der er på den anden side af portalen.

Opsætning af gengivelsesteksturer

  1. Opret en ny Render Texture ved at højreklikke i projektvinduet og vælge Create > Render Texture.
  2. Gentag dette for at oprette en anden gengivelsestekstur.
  3. Opret to nye kameraer i scenen, et til hver portal, og tildel hvert kamera en Render Texture.
  4. Indstil kameraernes positioner, så de matcher portalernes destinationer.

Anvendelse af gengivelsesteksturerne

using UnityEngine;

public class Portal : MonoBehaviour
{
    public Camera portalCamera;
    public Material portalMaterial;

    void Start()
    {
        portalMaterial.mainTexture = portalCamera.targetTexture;
    }
}

Vedhæft dette script til hver portal og tildel det tilsvarende portalkamera og materiale med Render Texture.

Vedligeholdelse af spillerorientering og momentum

For at gøre portalsystemet mere realistisk skal vi bevare spillerens orientering og momentum, når de passerer gennem en portal.

Forbedret Teleportation Script

using UnityEngine;

public class EnhancedPortal : MonoBehaviour
{
    public Transform destination;

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            CharacterController playerController = other.GetComponent();
            Rigidbody playerRigidbody = other.GetComponent();

            // Disable the CharacterController to allow manual position and rotation updates
            if (playerController != null)
            {
                playerController.enabled = false;
            }

            // Maintain orientation
            Vector3 relativePosition = destination.InverseTransformPoint(other.transform.position);
            other.transform.position = destination.TransformPoint(relativePosition);

            // Maintain momentum
            if (playerRigidbody != null)
            {
                Vector3 relativeVelocity = destination.InverseTransformDirection(playerRigidbody.velocity);
                playerRigidbody.velocity = destination.TransformDirection(relativeVelocity);
            }

            // Re-enable the CharacterController
            if (playerController != null)
            {
                playerController.enabled = true;
            }
        }
    }
}

Vedhæft dette script til hver portal og tildel den tilsvarende destination.

Test af portalsystemet

Følg disse trin for at teste portalsystemet:

  1. Placer spillerfiguren nær en af ​​portalerne.
  2. Tryk på Play for at køre spillet.
  3. Flyt spillerkarakteren ind i portalen og observer teleporteringen og de visuelle effekter.

Konklusion

Vi har udforsket forskellige teknikker til at skabe et portalsystem i Unity. Vi startede med grundlæggende teleportering, tilføjede visuelle portaler ved hjælp af gengivelsesteksturer og forbedrede systemet for at bevare spillerorientering og momentum. Disse koncepter kan udvides yderligere og tilpasses, så de passer til dit specifikke spilprojekts behov.