sourcePosition | Asal query sampel. |
hit | Memegang sifat lokasi yang dihasilkan. Nilai hit.normal tidak pernah sebanding. Hal ini selalu (0,0,0). |
maxDistance | Contoh dalam jarak ini dari sumberPosition. |
Login Login | Topeng yang menentukan daerah NavMesh memungkinkan ketika menemukan titik terdekat. |
Sitemap Benar jika titik terdekat ditemukan.bool True if the nearest point is found.
Temukan titik terdekat berdasarkan NavMesh dalam kisaran yang ditentukan.
Titik terdekat ditemukan dengan memproyeksikan titik input ke instance NavMesh terdekat di sepanjang sumbu vertikal. Sumbu vertikal ini telah dipilih untuk setiap instance pada saat creation. Jika langkah ini tidak menemukan titik proyek dalam jarak yang ditentukan, maka pengambilan sampel diperpanjang ke posisi NavMesh sekitarnya.
Cari titik terdekat berdasarkan jarak ke titik kueri. Fungsi ini tidak mempertimbangkan obstruksi. Misalnya, dalam dua struktur cerita, jika sumberPosition diatur ke titik di langit-langit di lantai pertama, titik terdekat mungkin ditemukan di lantai kedua daripada lantai pertama. Langit-langit tidak dianggap sebagai penghalang.
Fungsi ini dapat mengurangi tingkat bingkai jika radius pencarian besar ditentukan. Untuk menghindari masalah tingkat bingkai, dianjurkan bahwa Anda menentukan maxDistance dua kali tinggi agen.
Jika Anda mencoba menemukan titik acak di NavMesh, Anda harus menggunakan radius yang disarankan dan melakukan menemukan beberapa kali daripada menggunakan radius yang sangat besar.
// RandomPointOnNavMesh using UnityEngine; using UnityEngine.AI;
public class RandomPointOnNavMesh : MonoBehaviour { public float range = 10.0f;
bool RandomPoint(Vector3 center, float range, out Vector3 result) { for (int i = 0; i < 30; i++) { Vector3 randomPoint = center + Random.insideUnitSphere * range; NavMeshHit hit; if (NavMesh.SamplePosition(randomPoint, out hit, 1.0f, NavMesh.AllAreas)) { result = hit.position; return true; } } result = Vector3.zero; return false; }
void Update() { Vector3 point; if (RandomPoint(transform.position, range, out point)) { Debug.DrawRay(point, Vector3.up, Color.blue, 1.0f); } } }
sourcePosition | Asal query sampel. |
hit | Memegang sifat lokasi yang dihasilkan. Nilai hit.normal tidak pernah sebanding. Hal ini selalu (0,0,0). |
maxDistance | Contoh dalam jarak ini dari sumberPosition. |
filter | Filter menentukan area NavMesh yang diperbolehkan ketika menemukan titik terdekat. |
Sitemap Benar jika titik terdekat ditemukan.bool True if the nearest point is found.
Sampel posisi terdekat sumberPosition di setiap NavMesh yang dibangun untuk jenis agen yang ditentukan oleh filter.
Pertimbangkan hanya posisi di area yang ditentukan pada NavMeshQueryFilter.areaMask. Jari pencarian maksimum diatur oleh maxDistance. Informasi dari setiap posisi yang ditemukan dikembalikan dalam argumen hit.