• G#

NavMesh.Raycast

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 Raycast( Vektor3 sourcePosition, Vektor3 targetPosition, out AI.NavMeshHit hit, int Login Login);

Parameters

sourcePosition Asal-usul sinar.
targetPosition Ujung sinar.
hit Memegang sifat lokasi penghasil sinar.
Login Login Masker bitfield menentukan daerah NavMesh yang dapat dilewatkan ketika menginjak sinar.

Returns

Sitemap Benar jika sinar diakhiri sebelum mencapai posisi target. Jika tidak kembali palsu.bool True if the ray is terminated before reaching target position. Otherwise returns false.

Description

Melacak garis antara dua poin di NavMesh.

Titik sumber dan tujuan pertama dipetakan di NavMesh, kemudian sinar dilacak dari titik sumber menuju target. Jika sinar hits batas NavMesh, fungsi kembali benar dan data hit diisi. Jika jalan dari sumber ke target tidak terhalang, fungsi kembali palsu.

Jika sinarcast berakhir di tepi luar, hit.mask adalah 0; jika tidak mengandung topeng daerah dari poligon pemblokir.

Fungsi ini dapat digunakan untuk memeriksa apakah agen dapat berjalan tidak terhalang antara dua poin di NavMesh. Contohnya jika karakter memiliki gerakan dodge evasif yang membutuhkan ruang, Anda dapat menembak sinar dari lokasi karakter ke beberapa arah untuk menemukan tempat di mana karakter dapat menghindari.

NavMesh.Raycast berbeda dari cor sinar fisika karena bekerja pada "2.5D", di NavMesh. Perbedaan untuk raycast fisika adalah versi NavMesh dapat mendeteksi semua jenis obstruksi navigasi, seperti lubang di tanah, dan itu juga dapat memanjat lereng, jika daerahnya bisa dinavigasi.

// TargetReachable
using UnityEngine;
using UnityEngine.AI;

public class TargetReachable : MonoBehaviour { public Transform target; private NavMeshHit hit; private bool blocked = false;

void Update() { blocked = NavMesh.Raycast(transform.position, target.position, out hit, NavMesh.AllAreas); Debug.DrawLine(transform.position, target.position, blocked ? Color.red : Color.green);

if (blocked) Debug.DrawRay(hit.position, Vector3.up, Color.red); } }

Jika Anda mencari untuk menemukan titik terdekat pada NavMesh Anda harus menggunakan raycast fisika untuk menemukan titik di dunia, lihat contoh Klik Point.


Declaration

public static bool Raycast( Vektor3 sourcePosition, Vektor3 targetPosition, out AI.NavMeshHit hit, AI.NavMeshQueryFilter filter);

Parameters

sourcePosition Asal-usul sinar.
targetPosition Ujung sinar.
hit Memegang sifat lokasi penghasil sinar.
filter Filter yang menentukan daerah NavMesh dapat dilewatkan ketika menginjak sinar.

Returns

Sitemap Benar jika sinar diakhiri sebelum mencapai posisi target. Jika tidak kembali palsu.bool True if the ray is terminated before reaching target position. Otherwise returns false.

Description

Melacak garis antara dua posisi di NavMesh, tunduk pada batasan yang ditentukan oleh argumen filter.

Garis diakhiri di tepi luar atau area yang tidak dapat dilewati.