Membangun Tinggi Mesh untuk Penempatan Karakter Akurat
Memuat Beberapa NavMeshes menggunakan Pemuatan Aditif

Area Navigasi dan Biaya

Area Navigasi menentukan betapa sulitnya berjalan di daerah tertentu, daerah biaya yang lebih rendah akan lebih disukai selama temuan jalan. Selain setiap agen NavMeshSebuah mesh yang Unity menghasilkan perkiraan daerah dan hambatan yang dapat berjalan di lingkungan Anda untuk mencari jalan dan navigasi yang dikendalikan AI. More info
Lihat di Glossary
memiliki Masker Area yang dapat digunakan untuk menentukan di daerah mana agen dapat bergerak.

Dalam contoh di atas jenis area digunakan untuk dua kasus penggunaan umum:

  • Area Water dibuat lebih mahal untuk berjalan dengan menetapkan biaya yang lebih tinggi, untuk menghadapi skenario di mana berjalan di perairan dangkal lebih lambat.
  • Area Door dapat diakses oleh karakter tertentu, untuk membuat skenario di mana manusia dapat berjalan melalui pintu, tetapi zombie tidak bisa.

Jenis area dapat ditugaskan untuk setiap objek yang disertakan dalam baking NavMesh, di samping itu, setiap Off-Mesh Link memiliki properti untuk menentukan jenis area.

Biaya Jalan

Dalam murshell, biaya memungkinkan Anda untuk mengontrol daerah mana kupu-kupu mendukung ketika menemukan jalan. Misalnya, jika Anda mengatur biaya area ke 3.0, bepergian di daerah itu dianggap tiga kali lebih lama dari rute alternatif.

Untuk memahami sepenuhnya bagaimana biaya bekerja, mari kita lihat bagaimana jalan kerja.

Nodes and links visited during pathfinding.
Tidak ada dan tautan yang dikunjungi selama jalur.

Unity menggunakan A* untuk menghitung jalan terpendek di NavMesh. A * bekerja pada grafik node yang terhubung. Algoritme mulai dari node terdekat ke jalan mulai dan mengunjungi node penghubung sampai tujuan tercapai.

Sejak representasi navigasi Unity adalah meshGrafik utama primitif Unity. Mesh membuat sebagian besar dunia 3D Anda. Unity mendukung mesh poligon triangulat atau Quadrangulasi. Nurbs, Nurms, permukaan Subdiv harus dikonversi ke poligon. More info
Lihat di Glossary
poligon, hal pertama jalur perlu dilakukan adalah menempatkan titik pada setiap poligon, yang merupakan lokasi node. Jalan terpendek kemudian dihitung antara node ini.

Titik-titik kuning dan garis dalam gambar di atas menunjukkan bagaimana node dan link ditempatkan di NavMesh, dan dalam urutan yang mereka traversed selama A *.

Biaya untuk bergerak antara dua node tergantung pada jarak untuk perjalanan dan biaya yang terkait dengan jenis area poligon di bawah tautan, yaitu, jarak * biaya. Dalam praktek ini berarti, bahwa jika biaya daerah 2.0, jarak di poligon seperti itu akan muncul dua kali selama. Algoritma A* mengharuskan semua biaya harus lebih besar dari 1,0.

Efek dari biaya di jalur yang dihasilkan bisa sulit untuk tune, terutama untuk jalur yang lebih lama. Cara terbaik untuk mendekati biaya adalah memperlakukan mereka sebagai petunjuk. Misalnya, jika Anda ingin agen untuk tidak menggunakan tautan Off-Mesh terlalu sering, Anda dapat meningkatkan biaya mereka. Tapi itu bisa menantang untuk tune perilaku di mana agen lebih suka berjalan di trotoar.

Hal lain yang mungkin Anda perhatikan pada beberapa tingkat adalah bahwa pathfinder tidak selalu memilih jalur yang paling pendek. Alasan untuk ini adalah penempatan node. Efek dapat terlihat dalam skenario di mana area terbuka besar di samping hambatan kecil, yang menghasilkan mesh navigasi dengan poligon yang sangat besar dan kecil. Dalam kasus seperti itu node pada poligon besar dapat ditempatkan di mana saja di poligon besar dan dari titik jalan pandang seperti detour.

cost per tipe area dapat diatur secara global dalam tab Areas, atau Anda dapat menimpa mereka per agen menggunakan skrip.

Jenis Area

Jenis area ditentukan dalam tab Jendela Navigasi Areas. Ada 29 tipe kustom, dan 3 tipe built-in: Walkable, Tidak dapat berjalan, dan Jump.

  • Walkable adalah jenis area generik yang menentukan bahwa daerah dapat berjalan.
  • Not Walkable adalah tipe area generik yang mencegah navigasi. Hal ini berguna untuk kasus di mana Anda ingin menandai objek tertentu menjadi hambatan, tetapi tanpa mendapatkan NavMesh di atasnya.
  • Jump adalah jenis area yang ditugaskan untuk semua tautan Off-Mesh yang dihasilkan secara otomatis.

Jika beberapa objek dari berbagai jenis area yang tumpang tindih, jenis area navmesh yang dihasilkan umumnya akan menjadi salah satu dengan indeks tertinggi. Ada satu pengecualian namun: Tidak dapat berjalan selalu mengambil precedence. Yang bisa membantu jika Anda perlu memblokir area.

Masker Area

Setiap agen memiliki Masker Area yang menggambarkan daerah yang dapat digunakan saat menavigasi. Masker daerah dapat diatur dalam sifat agen, atau masker bit dapat dimanipulasi menggunakan script pada runtime.

Masker daerah berguna ketika Anda hanya ingin karakter jenis tertentu untuk dapat berjalan melalui daerah. Misalnya, dalam permainan evasi zombie, Anda dapat menandai daerah di bawah setiap pintu dengan tipe area Door, dan periksa area pintu dari Masker Area karakter zombie.

Baca Lebih Lanjut

Membangun Tinggi Mesh untuk Penempatan Karakter Akurat
Memuat Beberapa NavMeshes menggunakan Pemuatan Aditif