RaycastHit
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 34 / 63.
Physics.Raycast neye çarptığını da söyleyebilir. Yön bilgisinden sonra out RaycastHit hit ekle: yöntem true döndürdüğünde, hit değişkenini ayrıntılarla doldurmuş olur. out, bir C# yönteminin verdiğin bir değişken aracılığıyla ek bir değer döndürmesini sağlar. Bu mesafe ölçer, Space tuşuna bastığında nişan aldığı şeyi ve ne kadar uzakta olduğunu kaydeder:
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (Physics.Raycast(transform.position, transform.forward, out RaycastHit hit, 50f))
{
Debug.Log(hit.collider.name + " is " + hit.distance + " units away");
}
}
}Ön yüzü 12 birim ileride olan bir duvara nişan alındığında, Wall is 12 units away kaydını oluşturur. Diğer alanlar: hit.point ışının yüzeye değdiği dünya konumundaki noktadır, hit.normal yüzeyin o noktada baktığı yöndür (düz zeminde (0, 1, 0)), hit.transform ise çarpılan nesnenin Transform'udur. hit.collider.gameObject aracılığıyla nesneye dair etiketi gibi diğer bilgilere ulaşabilirsin.
hit değerini yalnızca if bloğunun içinde oku. Işın bir şeye çarpmadığında Raycast false döndürür ve hit kullanışlı hiçbir şey içermez: collider değeri null olur.
Görev
OrtaSilaha lazer nişangâhı ekle. LaserSight betiği Gun nesnesine eklenir ve Inspector, betiğe kırmızı dot nesnesini (bir Transform) ve 15 değerinde bir range verir. Sol ve sağ ok tuşları silahı döndürür.
- Her karede, silahtan kendi ileri yönünde,
rangebirim uzunluğunda bir ışın gönder. - Işın bir şeye çarptığında noktayı göster ve tam olarak ışının yüzeye değdiği yere yerleştir.
- Hiçbir şeye çarpmadığında
SetActive(false)ile noktayı gizle.
Dot, Ignore Raycast katmanındadır; bu nedenle ışın noktanın kendisinden geçer. Play düğmesine bas ve lazeri duvarın, kasanın ve varilin üzerinde gezdir, ardından Check düğmesine bas.
Kendin dene
using UnityEngine;
public class LaserSight : MonoBehaviour
{
public Transform dot;
public float range = 15f;
void Update()
{
// dot'u lazerin bir yüzeye çarptığı yere yerleştir; lazer hiçbir şeye çarpmadığında gizle.
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Fizik ve Oynanış bölümündeki tüm dersler
1Rigidbody
Yerçekimi ve KütleAddForce ile İtmeDürtüyle ZıplamaFizik için FixedUpdateHızKinematik CisimlerTekrar: Fırlatma Rampası2Çarpışmalar
OnCollisionEnterNeye Çarptım?Çarpınca KırılYerde DurmakSekme ve SürtünmeCollider ŞekilleriTekrar: Kırılabilir Duvar