• G#

NavMesh.SamplePosition

Sarankan perubahan

Success!

Terima kasih untuk membantu kami meningkatkan kualitas Dokumentasi Unity. Meskipun kami tidak dapat menerima semua pengajuan, kami membaca setiap perubahan yang disarankan dari pengguna kami dan akan melakukan pembaruan di mana berlaku.

Close

Penjelasan gagal

Untuk beberapa alasan perubahan yang disarankan Anda tidak dapat diajukan. Silahkan <a>try lagi</a> dalam beberapa menit. Dan terima kasih untuk mengambil waktu untuk membantu kami meningkatkan kualitas Dokumentasi Unity.

Close

Cancel

Declaration

publik static bool SamplePosition( Vektor3 sourcePosition, out AI.NavMeshHit hit, float maxDistance, int Login Login);

Parameters

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.

Returns

Sitemap Benar jika titik terdekat ditemukan.bool True if the nearest point is found.

Description

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); } } }

Declaration

publik static bool SamplePosition( Vektor3 sourcePosition, out AI.NavMeshHit hit, float maxDistance, AI.NavMeshQueryFilter filter);

Parameters

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.

Returns

Sitemap Benar jika titik terdekat ditemukan.bool True if the nearest point is found.

Description

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.