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:
- Unity'de yeni bir 3 boyutlu sahne oluştur.
- Zemin yüzeyini oluşturmak için GameObject > 3D Object > Plane yolunu izleyin.
- Uçağın ölçeğini oyuncunun dolaşabileceği kadar büyük olacak şekilde ayarlayın.
- 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:
- Proje penceresinde sağ tıklayın ve Oluştur > C# Script seçeneğini seçin. Adını FirstPersonController olarak belirleyin.
- 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.