NavMesh Kullanarak Unity'de Bir NPC'nin Oyuncuyu Kovalaması Nasıl Sağlanır
Bu eğitimde, Oyuncuyu kovalayan bir NPC oluşturmak için Unity'nin NavMesh sistemini kullanacağız. NavMesh, etkili yol bulma ve engel önleme sağlayarak onu 3B ortamlardaki AI davranışı için ideal hale getirir.
Adım 1: Sahneyi Kurma
NavMesh'i uygulamadan önce uygun bir sahne kurulumuna ihtiyacımız var:
- Unity'de yeni bir 3D proje oluşturun.
- Zemin görevi görecek bir Plane ekleyin.
- Oyuncuyu temsil etmek için bir Küp veya herhangi bir 3B model ekleyin. Adını Oyuncu koyun.
- NPC'yi temsil etmek için başka bir Küp veya 3B model ekleyin. Adını NPC koyun.
- Oyuncuyu ve NPC'yi Düzlem üzerinde farklı pozisyonlara yerleştirin.
Adım 2: NavMesh'i Pişirme
Unity'nin NavMesh sistemini kullanmak için, navigasyon ağını pişirmemiz gerekiyor:
- Hiyerarşide Zemin Düzlemini seçin.
- Denetçi'de Bileşen Ekle'e tıklayın ve bir NavMeshSurface ekleyin.
- NavMeshSurface bileşeninde, Plane'in yürünebilir yüzey olarak işaretlendiğinden emin olun.
- NavMeshSurface bileşenindeki Bake düğmesine tıklayarak NavMesh'i oluşturun.
- İsteğe bağlı: Eğer engelleriniz varsa (örneğin duvarlar), NPC hareketini engellemek için NavMeshObstacle bileşenlerine sahip olduklarından emin olun.
Adım 3: NavMeshAgent Ekleme
Şimdi NPC'yi Unity'nin yol bulma özelliğini kullanacak şekilde hazırlayalım:
- Hiyerarşide NPC'yi seçin.
- Denetçi'de Bileşen Ekle'e tıklayın ve bir NavMeshAgent ekleyin.
- Hız, ivme ve durma mesafesi gibi NavMeshAgent özelliklerini gerektiği gibi ayarlayın.
Adım 4: Chase Senaryosunu Yazma
Daha sonra NPC'nin Oyuncuyu kovalamasını sağlayacak bir script oluşturacağız:
- Proje panelinde sağ tıklayın ve Oluştur > C# Komut Dosyası'ü seçin. Adını NPCCase olarak belirleyin.
- Komut dosyasına çift tıklayarak kod düzenleyicinizde açın.
- Varsayılan kodu aşağıdakiyle değiştirin:
using UnityEngine;
using UnityEngine.AI;
public class NPCChase : MonoBehaviour
{
public Transform player; // Reference to the player's position
private NavMeshAgent agent; // Reference to the NavMeshAgent
void Start()
{
// Get the NavMeshAgent component
agent = GetComponent<NavMeshAgent>();
}
void Update()
{
if (player != null)
{
// Set the agent's destination to the player's position
agent.SetDestination(player.position);
}
}
}
Adım 5: Komut Dosyası ve Oynatıcı Referansını Atama
Son olarak betiği atayacağız ve Player referansını ayarlayacağız:
- Hiyerarşide NPC'yi seçin.
- NPCChase betiğini NPC'ye sürükleyip bırakın.
- Denetçide, komut dosyasındaki Oyuncu alanını bulun.
- Oyuncu Oyun Nesnesini Hiyerarşi'den Oyuncu alanına sürükleyin.
Adım 6: Sahneyi Test Etme
Kurulumunuzu test etmek için:
- Unity Editör'de Oynat düğmesine basın.
- Oyuncuyu hareket ettirin (örneğin, klavye veya kontrol cihazı girişi kullanarak).
- NPC'nin Oyuncuyu dinamik olarak nasıl takip ettiğini ve yol bulduğunu, mümkün olduğunda engellerden nasıl kaçındığını gözlemleyin.
İsteğe bağlı: Davranışı Özelleştirme
NPC'nizin davranışlarını daha da iyileştirebilirsiniz:
- Durma Mesafesi: NavMeshAgent'ın Durma Mesafesi değerini ayarlayarak NPC'nin belirli bir mesafede durmasını sağlayın.
- Engellerden Kaçınma: Engellerin doğru bir şekilde kaçınılabilmesi için NavMeshObstacle bileşenlerine sahip olduğundan emin olun.
- Animasyonlar: NPC hareketlerini hıza göre tetikleyerek daha gerçekçi hale getirmek için animasyonları kullanın.
Çözüm
Unity'nin NavMesh sistemini kullanarak Oyuncuyu dinamik olarak kovalayan bir NPC yarattık. Bu yaklaşım sağlamdır ve daha karmaşık AI davranışları için kolayca genişletilebilir. NPC'nin yol bulmasını oyununuzun ihtiyaçlarına göre uyarlamak için farklı ayarlar deneyin.