Unity'de Birinci Şahıs Denetleyici Oluşturma

Bu eğitim, Unity'de basit bir birinci şahıs kontrolcüsü oluşturmanıza rehberlik edecektir. Birinci şahıs kontrolcüsü, oyuncuların akıcı hareket ve kamera dönüşüyle ​​3B bir dünyayı keşfetmesini sağlar. Temel C# betikleme ve Unity'nin yerleşik CharacterController bileşenini kullanacağız.

1. Sahneyi Kurmak

Birinci şahıs kontrol cihazınız için temel sahne ortamını ayarlayarak başlayın:

  1. Unity'de yeni bir 3 boyutlu sahne oluştur.
  2. Zemin yüzeyini oluşturmak için GameObject > 3D Object > Plane yolunu izleyin.
  3. Uçağın ölçeğini oyuncunun dolaşabileceği kadar büyük olacak şekilde ayarlayın.
  4. Engeller veya etkileşime girebileceğiniz duvarlar eklemek için GameObject > 3D Object > Cube öğesine gidin.

2. Oyuncu Nesnesini Ekleme

Oyuncuyu temsil etmek için bir kapsül nesnesi kullanacağız:

  • Sahneye bir kapsül eklemek için GameObject > 3D Object > Capsule yoluna gidin.
  • Kapsülü yerden biraz yukarıya yerleştirin (örneğin, Konum = (0, 1, 0)).
  • Kapsülün adını Oyuncu olarak değiştirin.
  • Çarpışmaları CharacterController yöneteceğinden Capsule Collider bileşenini kaldırın.
  • Player nesnesine bir CharacterController bileşeni eklemek için Player'ı seçin, ardından Denetçi'de Bileşen Ekle'e tıklayın ve CharacterController'ı arayın.

3. Birinci Şahıs Kontrolcü Komut Dosyasını Yazma

Şimdi, oyuncunun hareketini ve kamera dönüşünü yönetecek bir script oluşturalım:

  1. Proje penceresinde sağ tıklayın ve Oluştur > C# Script seçeneğini seçin. Adını FirstPersonController olarak belirleyin.
  2. Komut dosyasını Proje penceresinden Hiyerarşi'deki Oynatıcı'ya sürükleyerek Oynatıcı nesnesine ekleyin.

Scripti açın ve içeriğini aşağıdaki kodla değiştirin:

using UnityEngine;

public class FirstPersonController : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float mouseSensitivity = 2f;
    public float gravity = -9.81f;

    private CharacterController controller;
    private Vector3 velocity;
    private Transform cameraTransform;

    void Start()
    {
        controller = GetComponent();
        cameraTransform = Camera.main.transform;
        cameraTransform.position = new Vector3(transform.position.x, transform.position.y + 1.5f, transform.position.z);
        cameraTransform.parent = transform; // Attach camera to player
    }

    void Update()
    {
        // Player movement
        float moveX = Input.GetAxis("Horizontal") * moveSpeed;
        float moveZ = Input.GetAxis("Vertical") * moveSpeed;
        Vector3 move = transform.right * moveX + transform.forward * moveZ;

        controller.Move(move * Time.deltaTime);

        // Apply gravity
        if (controller.isGrounded && velocity.y < 0)
        {
            velocity.y = -2f;
        }
        velocity.y += gravity * Time.deltaTime;
        controller.Move(velocity * Time.deltaTime);

        // Camera rotation
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;

        transform.Rotate(Vector3.up * mouseX);
        cameraTransform.Rotate(Vector3.left * mouseY);
    }
}

4. Kameranın Takılması

Birinci şahıs görünümü için kameranın oynatıcıya bağlı olması gerekir:

  • Hiyerarşide Ana Kamera'u seçin.
  • Bunu Player nesnesinin biraz üstüne yerleştirin (örneğin, Y = 1,5).
  • Kamerayı Hiyerarşi'deki Oyuncu nesnesinin üzerine sürükleyerek onu Oyuncu'nun bir çocuğu yapın. Bu, onun oyuncunun hareketlerini ve dönüşlerini takip etmesini sağlayacaktır.

5. Girişleri Yapılandırma

Unity'nin Giriş Yöneticisi, hareket için "Yatay" ve "Dikey" gibi önceden tanımlanmış eksen adlarını ve fare girişi için "Fare X" ve "Fare Y"yi kullanır. Bunlar otomatik olarak yapılandırılır, ancak hassasiyeti Düzenle > Proje Ayarları > Giriş Yöneticisi'dan ayarlayabilirsiniz.

6. Denetleyiciyi Test Etme

Artık birinci şahıs kontrolcümüz hazır olduğuna göre, test etmek için oynat düğmesine basın:

  • Oyuncuyu ileri, geri ve yanlara hareket ettirmek için W, A, S, D tuşlarını kullanın.
  • Kamerayı döndürmek için fareyi hareket ettirin ve etrafınıza bakın.
  • Oyuncunun doğal olarak düşüp düşmediğini görmek için yüksekteki nesnelerden aşağı inerek yer çekiminin çalıştığından emin olun.

7. Denetleyiciyi Geliştirme

Birinci şahıs kontrolcüsünü daha da geliştirmek için şunları ekleyebilirsiniz:

  • Shift tuşuna basılı tutulduğunda hareket hızını artırarak koşma işlevi.
  • Oyuncunun boşluk tuşuna bastığını algılayıp yukarı doğru hız uygulayarak zıplama mantığı.
  • Oyuncunun çevreyle daha karmaşık etkileşimler kurması için tırmanma veya çömelme mekaniği.

Çözüm

Bu temel birinci şahıs kontrol cihazıyla artık 3B ortamları keşfetmek için işlevsel bir oyuncu kurulumuna sahipsiniz. Komut dosyasını özelleştirerek ve genişleterek oyununuzun ihtiyaçlarına uyacak şekilde daha fazla özellik ve etkileşim ekleyebilirsiniz.