Membuat Sistem Portal di Unity

Portal merupakan fitur populer dalam banyak permainan, yang memungkinkan pemain untuk berpindah dari satu lokasi ke lokasi lain dengan mudah. ​​Dalam tutorial ini, kita akan menjelajahi berbagai teknik untuk membuat sistem portal di Unity. Kita akan membahas teleportasi dasar, menggunakan tekstur render untuk portal visual, dan menerapkan mekanisme portal yang menjaga orientasi dan momentum pemain.

Menyiapkan Proyek

Untuk memulai, mari kita buat proyek Unity dasar:

  1. Buat proyek Unity baru.
  2. Tambahkan folder baru bernama Scripts untuk mengatur skrip kita.
  3. Buat adegan 3D baru dengan beberapa objek dasar, termasuk karakter pemain dan dua objek portal.

Teleportasi Dasar

Bentuk paling sederhana dari sistem portal adalah teleportasi dasar, di mana pemain langsung berpindah dari satu lokasi ke lokasi lain.

Membuat Skrip Teleportasi

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

Lampirkan skrip ini ke kedua objek portal dan tetapkan tujuan ke portal terkait.

Menggunakan Tekstur Render untuk Portal Visual

Untuk membuat sistem portal yang lebih mendalam, kita dapat menggunakan tekstur render untuk menunjukkan apa yang ada di sisi lain portal.

Menyiapkan Tekstur Render

  1. Buat Tekstur Render baru dengan mengklik kanan di jendela Proyek dan pilih Buat > Tekstur Render.
  2. Ulangi ini untuk membuat Tekstur Render kedua.
  3. Buat dua kamera baru dalam adegan, satu untuk setiap portal, dan tetapkan Tekstur Render pada setiap kamera.
  4. Atur posisi kamera agar sesuai dengan tujuan portal.

Menerapkan Tekstur Render

using UnityEngine;

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

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

Lampirkan skrip ini ke setiap portal dan tetapkan kamera portal dan material yang sesuai dengan Tekstur Render.

Mempertahankan Orientasi dan Momentum Pemain

Untuk membuat sistem portal lebih realistis, kita perlu mempertahankan orientasi dan momentum pemain saat mereka melewati portal.

Skrip Teleportasi yang Ditingkatkan

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

Lampirkan skrip ini ke setiap portal dan tetapkan tujuan yang sesuai.

Menguji Sistem Portal

Untuk menguji sistem portal, ikuti langkah-langkah berikut:

  1. Tempatkan karakter pemain di dekat salah satu portal.
  2. Tekan Mainkan untuk menjalankan permainan.
  3. Pindahkan karakter pemain ke portal dan amati teleportasi dan efek visualnya.

Kesimpulan

Kami telah menjajaki berbagai teknik untuk membuat sistem portal di Unity. Kami mulai dengan teleportasi dasar, menambahkan portal visual menggunakan tekstur render, dan menyempurnakan sistem untuk mempertahankan orientasi dan momentum pemain. Konsep-konsep ini dapat diperluas dan disesuaikan lebih lanjut agar sesuai dengan kebutuhan proyek game spesifik Anda.