Tworzenie systemu portalowego w Unity

Portale są popularną funkcją w wielu grach, umożliwiającą graczom bezproblemową teleportację między różnymi lokalizacjami. W tym samouczku przyjrzymy się różnym technikom tworzenia systemu portali w Unity. Omówimy podstawową teleportację, używanie tekstur renderowania dla portali wizualnych i implementację mechanizmów portali, które utrzymują orientację i pęd gracza.

Konfigurowanie projektu

Na początek skonfigurujmy podstawowy projekt Unity:

  1. Utwórz nowy projekt Unity.
  2. Dodaj nowy folder o nazwie Scripts, aby uporządkować nasze skrypty.
  3. Utwórz nową scenę 3D zawierającą kilka podstawowych obiektów, w tym postać gracza i dwa obiekty portalu.

Podstawowa teleportacja

Najprostszą formą systemu portali jest podstawowa teleportacja, dzięki której gracz natychmiast przenosi się z jednego miejsca do drugiego.

Tworzenie skryptu teleportacji

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;
        }
    }
}

Dołącz ten skrypt do obu obiektów portalu i przypisz miejsce docelowe do odpowiedniego portalu.

Korzystanie z tekstur renderowania dla portali wizualnych

Aby stworzyć bardziej wciągający system portalu, możemy użyć tekstur renderowania, by pokazać, co znajduje się po drugiej stronie portalu.

Konfigurowanie tekstur renderowania

  1. Utwórz nową teksturę renderowania, klikając prawym przyciskiem myszy w oknie projektu i wybierając Utwórz > Tekstura renderowania.
  2. Powtórz tę czynność, aby utworzyć drugą teksturę renderowania.
  3. Utwórz dwie nowe kamery w scenie, po jednej dla każdego portalu, i przypisz każdej kamerze teksturę renderowania.
  4. Ustaw pozycje kamer tak, aby odpowiadały celom portali.

Stosowanie tekstur renderowania

using UnityEngine;

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

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

Dołącz ten skrypt do każdego portalu i przypisz odpowiednią kamerę i materiał portalu za pomocą tekstury renderowania.

Utrzymywanie orientacji i dynamiki gracza

Aby system portali był bardziej realistyczny, musimy zachować orientację i pęd gracza, gdy przechodzi przez portal.

Ulepszony skrypt teleportacji

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;
            }
        }
    }
}

Dołącz ten skrypt do każdego portalu i przypisz odpowiednie miejsce docelowe.

Testowanie systemu portalu

Aby przetestować system portalu, wykonaj następujące kroki:

  1. Umieść postać gracza w pobliżu jednego z portali.
  2. Naciśnij Play, aby uruchomić grę.
  3. Przesuń postać gracza do portalu i obserwuj teleportację oraz efekty wizualne.

Wniosek

Przeanalizowaliśmy różne techniki tworzenia systemu portali w Unity. Zaczęliśmy od podstawowej teleportacji, dodaliśmy portale wizualne za pomocą tekstur renderowania i udoskonaliliśmy system, aby utrzymać orientację i pęd gracza. Koncepcje te można dalej rozwijać i dostosowywać do potrzeb konkretnego projektu gry.