• Direk SANAL GERÇEKLİK GÖZLÜĞÜNÜZDEN, tarayıcı ile oyun listesinden "Oyun ve Uygulamaları" nasıl indirir ve kurarsınız? Rehber için TIKLAYIN

Teknik Unity 2022 LTS ve üzeri sürümlerde yeni AI Navigation paketinin kullanımı

Eagle

İçerik Üreticisi
Developer
XR Başlığı
Quest 2
Yapay zeka navigasyon paketi, Unity projelerinizde yol bulmayı kolaylaştırarak karakterlerin oyun dünyasında akıllıca hareket edebilmesini sağlar.

Ancak, birçok seçenek mevcut olsa bile, birkaç tuzak olabilir. Bu hızlı sorun giderme makalesi, Unity'nin NavMesh sistemiyle çalışırken karşılaşılan bazı yaygın sorunlara ve sorulara çözümler sağlamayı amaçlamaktadır.

NavMesh yüzeylerine örnek
NavMesh yüzeylerine örnek


Hadi başlayalım!
Öncelikle, varsayılan Düzenleyicinin bir parçası olmadığı için AI Navigation'ın yüklü olduğundan emin olmalısınız. Yüklü olup olmadığını kontrol etmek için Unity Registry altında Window > Package Manager'a gidin ve Package Manager altındaki listede arayın.

Unity Paket Yöneticisindeki AI Navigasyon paketi

Unity Paket Yöneticisindeki AI Navigasyon paketi

AI Navigasyon sistemi hakkında daha fazla bilgi edinmek istiyorsanız, Paket Yöneticisi'nden indirebileceğiniz Örnekler klasöründe birkaç yararlı sahne gösterimi bulunmaktadır.

AI Navigation paketindeki Örnekler klasörü
AI Navigation paketindeki Örnekler klasörü

GameObject > AI > NavMesh Surface'a gidin .

GameObject penceresinde NavMesh yüzey seçeneği


Bu seçeneğe tıklayarak, NavMesh Surface bileşeninin bağlı olduğu bir GameObject oluşturacaksınız . Bu GameObject, herhangi bir diğer GameObject gibi, bir NavMesh yüzeyini herhangi bir noktada etkinleştirmek veya devre dışı bırakmak için "açık" veya "kapalı" olarak değiştirilebilir.

Denetçi penceresinde NavMesh Surface Player

Denetçi penceresinde NavMesh Surface Player

NavMesh yüzeyini oluşturmak için kullanılan değerleri tanımlamak için seçili Agent Type'ı kullanacaktır . Bu NavMesh yüzeyi yalnızca seçili Agent Type tarafından kullanılacaktır . Sahnenizde birden fazla NavMesh agent'ınız varsa, her biri farklı bir Agent Type'ı hedefleyen birden fazla NavMesh yüzeyi oluşturmanız gerekecektir. Bu, 2022.3'ten önceki Unity sürümlerinde kullanılan yerleşik Navigation sistemine kıyasla büyük bir farktır.
NavMesh yüzeyini pişirmek için Bake'e tıklayın . NavMesh yüzeyini yeniden pişirmek için herhangi bir noktada Bake'e tekrar tıklayabilir veya NavMesh yüzey verilerini silmek için Clear'a basabilirsiniz.
Yerleşik Navigasyon sistemini kullanan Unity'nin önceki sürümleri (2022.2 ve altı), NavMesh yüzey bake'ine dahil edilmeleri için GameObjects'in Navigasyon statik olarak işaretlenmesini gerektiriyordu. Daha yeni AI Navigasyon sistemiyle artık nesneleri Navigasyon statik olarak işaretlemenize gerek kalmadı .
AI Navigation paketini yükledikten sonra Unity pencerenizin sağ alt kısmında bir GUI paneli göreceksiniz. Buradan NavMesh ve HeightMesh ekranında "açık" veya "kapalı" konuma geçebilir ve ayrıca sahnenizde birkaç tane pişirdiyseniz yalnızca seçili NavMesh'i gösterebilirsiniz.

AI Navigasyon penceresinde NavMesh'i göster ve HeightMesh'i göster


NavMesh'i hala göremiyorsanız, Sahne görünümünüzde Gizmos'un etkinleştirildiğinden emin olun.

Unity'deki Sahne görünümünde Gizmos'un görünürlüğünü değiştir


Klavyenizdeki ' kesme işaretine basarak Overlays menüsünü açın. Buradan AI Navigation GUI panelinde "açık" veya "kapalı" konuma geçebilirsiniz .

Kaplamalar menüsü

Ajanınızın Adım Yüksekliğine bağlı olarak , NavMesh yüzeyinin biraz fazla karmaşık hale gelebileceğini, bir kısmının yere daha yakın küçük nesnelere kadar uzandığını görebilirsiniz. Karakterin yürüyemeyeceği masaların, kutuların vb. üstünde istenmeyen NavMesh adaları olabilir.

Karakterin yürüyebildiği (mavi yüzey) ve yürüyemediği (mavi olmayan yüzey) NavMesh yüzeylerine örnek

Karakterin yürüyebildiği (mavi yüzey) ve yürüyemediği (mavi olmayan yüzey) NavMesh yüzeylerine örnek

Her karakter için kolayca birkaç NavMesh yüzeyi oluşturabilirsiniz. Biri zemin için, biri basamaklar için ve diğeri rampalar veya tırmanılacak herhangi bir alan için.

Öncelikle Navigasyon sekmesine gidin ve Agent'ınızın Adım Yüksekliğini sıfıra, Maksimum Eğim değerini de sıfıra ayarlayın.


Denetçideki gezinme penceresi

Denetçideki gezinme penceresi

Şimdi NavMesh Surface'ınızı daha az karmaşık hale getirmek için yeniden pişirin.

Yeniden pişirildikten sonra NavMesh yüzeyi
Yeniden pişirildikten sonra NavMesh yüzeyi


Adımlar ve rampalar gibi diğer alanlar için, bunları fırınlamadan önce acentenizin Adım Yüksekliğini ve Maksimum Eğimini değiştirebilirsiniz.

Toplanan Nesneler
bölümünün altındaki Hacim seçeneğini kullanarak NavMesh adımlarını yalnızca bu adımların bulunduğu alanda pişirin.

Bir NavMesh yüzeyi oluştururken nesneleri dahil etmenin veya hariç tutmanın sayısız yolu vardır. NavMesh yüzey bileşeninde , Hiyerarşideki NavMesh GameObject'in bir parçası olarak , Nesne Koleksiyonu adlı bir bölüm vardır .

Açılır listede, hangi nesnelerin dahil edileceğini veya hariç tutulacağını kontrol etmenizi sağlayan dört seçenek bulunur.


Nesneleri Topla açılır listesi
Nesneleri Topla açılır listesi


Tüm Oyun Nesneleri

Adından da anlaşılacağı gibi bu sahnenizdeki tüm GameObject'leri içerecektir. Bu varsayılan seçenektir.

Hacim

Bu seçenek, bir kutu Hacim
alanı tanımlamanıza ve NavMesh yüzeyini yalnızca o alanda pişirmenize olanak tanır. Bu, bir AI aracısını küçük, belirli bir alanla sınırlamanız gerektiğinde harikadır.

Hacim kutusunun kenarlarındaki yeniden boyutlandırma noktalarını tıklayıp sürükleyerek Hacmi Düzenle düğmesine tıklayın ve kutuyu yeniden boyutlandırın.

Nesneleri Topla açılır listesindeki Hacmi Düzenle seçeneği
Nesneleri Topla açılır listesindeki Hacmi Düzenle seçeneği


Volume boyutunu tanımladıktan sonra , NavMesh yüzeyini oluşturmak için Bake'e tıklayın. Volume'u yeniden boyutlandırırsanız , NavMesh yüzeyini yeniden oluşturmak için tekrar Bake'e tıklayın.

Hacim boyutunu tanımladıktan sonra NavMesh yüzeyi


Hacim boyutunu tanımladıktan sonra NavMesh yüzeyi

Mevcut Nesne Hiyerarşisi

Bu seçenek etkinleştirildiğinde, Hiyerarşinizde açık olan nesneleri kullanacaktır. Kapalı olan nesneler yok sayılacaktır.

Yalnızca NavMeshModifier Bileşeni

Oyununuz üzerinde çalışırken NavMesh yüzeyini birkaç kez yeniden pişirmeniz gerekebileceğini biliyorsanız bu yararlıdır. NavMesh yüzeyine dahil edilmesini istediğiniz herhangi bir GameObject'e bir NavMeshModifier bileşeni ekleyebilirsiniz. Bu bileşene sahip olmayan herhangi bir nesne yok sayılacaktır.

Katmanları Dahil Et

NavMesh yüzeyini oluştururken dahil etmek istediğiniz nesneleri depolamak için yeni bir katman oluşturulabilir. Varsayılan olarak bu, tüm katmanları içeren "Her Şey" olarak ayarlanmıştır, ancak yalnızca tek bir katman seçebilirsiniz.

All GameObjects yönteminden farklı bir yöntem kullanıyorsanız bu gerekli değildir, ancak bir NavMesh yüzeyi oluştururken hangi nesnelerin dahil edileceği veya hariç tutulacağı konusunda seçici olmanızı sağlayan başka bir yoldur.
Pencere > AI > Gezinme'ye gidin.

Editör penceresindeki AI Navigasyon seçeneği

Editör penceresindeki AI Navigasyon seçeneği

Bu panelden Agent Types altındaki + ikonuna tıklayarak istediğiniz kadar agent türü ekleyebilirsiniz . Her bir agent'ın değerlerini değiştirebilirsiniz.

Her yeni ajan türü için bir NavMesh yüzeyi oluşturmanız gerekecektir.

Artık birden fazla NavMesh yüzeyi oluşturabilir ve her birini farklı bir ajan türü kullanabilir, böylece farklı karakterler farklı yollar izleyebilir.

Karakterin yüksekten düşmesini veya nesnelerin üzerinden atlamasını istiyorsanız, Oluşturulan Bağlantılar bölümüne sıfırdan büyük değerler ekleyin.

Gezinme penceresindeki Oluşturulan Bağlantılar bölümü

Gezinme penceresindeki Oluşturulan Bağlantılar bölümü

NavMesh Surface bileşenini kullanırken , artık Agent Type ( Ajan Türü) açılır listesinden farklı ajanlar seçebileceğinizi göreceksiniz :

Aracı Türü açılır listesi
Aracı Türü açılır listesi


Eğer Drop Height sıfırdan büyükse, ajanların bir yüzeyden diğerine nereye bırakılabileceğini göstermek için pişirme işleminden sonra otomatik olarak NavMesh yüzeyinize aygıtlar bırakacaktır.

Bunların dahil edilebilmesi için Bağlantıları Oluştur onay kutusunun işaretli olduğundan emin olun .

NavMeshSurface menüsünde Bağlantıları Oluştur seçeneği işaretli
NavMeshSurface menüsünde Bağlantıları Oluştur seçeneği işaretli



Sahne görünümü

Sahne görünümü
Unity 2022 LTS veya Unity 6 Preview kullanıyorsanız ve Unity 2021 LTS gibi önceki bir Unity sürümünde oluşturulmuş bir projeyi yükseltmek istiyorsanız, yerleşik NavMesh yüzeyini daha yeni AI Navigasyon sistemini kullanacak şekilde güncellemeniz gerekir.

Bunu nasıl yapabileceğinizi anlatalım:

Pencere > AI > NavMesh Güncelleyici'ye gidin .

Unity Editor penceresinde NavMesh Güncelleyici seçeneği

Unity Editor penceresinde NavMesh Güncelleyici seçeneği

Bu, pişmiş NavMesh'i Hiyerarşi'ye eklenen bir GameObject üzerindeki NavMesh bileşenini kullanacak şekilde dönüştürür . Ayrıca, daha yeni NavMeshModifier bileşenlerini kullanmak için "NavMesh static" olarak işaretlenen nesneleri günceller . Penceredeki herhangi bir sahneyi veya tüm sahneleri seçebilir ve Varlıkları Dönüştür'e tıklayabilirsiniz .

** NavMeshUpdater penceresindeki Varlıkları Dönüştür seçeneği

** NavMeshUpdater penceresindeki Varlıkları Dönüştür seçeneği

NavMesh Değiştirici bileşeni Gizmos, “NavMesh statik” olarak işaretlenen tüm nesnelerde görünecek ve NavMesh yüzeyi bu nesnelerin etrafında delikler oluşturacak.

NavMesh yüzeyi artık Hiyerarşi içindeki bir GameObject içerisinde yer alacak ve gerektiğinde onu oradan temizleyebilir veya yeniden işleyebilirsiniz.
Hareketli nesneyi seçin ve bir NavMesh Engel bileşeni ekleyin. Engelin şeklinin Yarıçapını ve Yüksekliğini değiştirebilirsiniz. NavMesh yüzeyinde bir delik açmak için Oyma onay kutusunu işaretleyin.
Hareket eden bir nesneyse, Carve Only Stationary kutusunu işaretlenmemiş bırakın. NavMesh yüzeyindeki delik artık nesneyi takip edecektir.
Eğer nesneyi yok ederseniz NavMesh yüzeyindeki delik kaybolacaktır.

NavMesh yüzey bileşeni penceresi

NavMesh yüzey bileşeni penceresi

resim12


Unity sahnesindeki NavMesh engel bileşeni.

NavMesh Engel bileşeni tüm NavMesh yüzeylerinde delikler açacaktır.
Sahnenizde ajanlarınızın üzerinden atlamasını istediğiniz alanlar olabilir.

Unity sahnesinde ajanın üzerinden atlaması gereken bir alanın örneği
Unity sahnesinde ajanın üzerinden atlaması gereken bir alanın örneği

Boş bir GameObject oluşturun ve bir NavMeshLink bileşeni ekleyin. Bu, ajanın zıplamasını kontrol etmek için kullanılır.

NavMeshLink bileşeni


Bu boş GameObject'i, ajanın üzerinden atlamasını istediğiniz alanın üzerine yerleştirin. NavMeshLink bileşeninin değerlerini ayarlamanız gerekecektir .

Atlama için Gizmos'u göreceksiniz. Her iki uçta birer tane olmak üzere iki daire göründüğünde, NavMesh'e dokunduğu anlamına gelir.

NavMeshLink bileşeninde aracının atlaması için kullanılabilen Gizmos'lar


Daha sonra Başlangıç Noktası ve Bitiş Noktası konumlarını ayarlayabilirsiniz.

NavMeshLink bileşen menüsündeki JumpArea için Başlangıç Noktası ve Bitiş Noktası*


resim10


Unity sahnesinde Başlangıç Noktası ve Bitiş Noktasının Ayarlanması

Ajan bu atlama alanı üzerinde daha hızlı hareket ediyormuş gibi görünecektir.
Atlamanın kendisi kod tarafından ele alınması gerekir. Ancak, bunu kolaylaştırmak için, AI Navigation Samples'a ajan atlamasını ele alacak bir betik eklenmiştir.
Karaktere Agent Link Mover betiğini ekleyin ve Yöntem açılır listesinden çeşitli atlama stilleri arasından seçim yapabilirsiniz.

Yöntem açılır listesinden farklı atlama stilleri seçin

Yöntem açılır listesinden farklı atlama stilleri seçin
 

Yeni Eklenen Oyunlar

Sitemiz bir forum sitesi olduğu için kullanıcılar her türlü görüşlerini önceden onay olmadan anında siteye yazabilmektedir. 5651 sayılı yasaya göre bu yazılardan dolayı doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. 5651 sayılı yasaya göre sitemiz mesajları kontrolle yükümlü olmayıp, yasaya aykırı yada telif hakkı içeren paylaşımlar BURADAN bize ulaşıldığı taktirde, ilgili konu en geç 48 saat içerisinde kaldırılacaktır. Sitemizde Bulunan Videolar YouTube, Facebook, Dailymotion, v.b. video paylaşım sitelerinden alınmaktadır. Telif hakları sorumluluğu bu sitelere aittir. Videoların hiç biri sunucularımızda bulunmamaktadır.
Geri
Üst