RaycastHit
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 36 / 71.
Physics.Raycast neye çarptığını da söyleyebilir. Yönden sonra out RaycastHit hit ekle: yöntem true döndürdüğünde, ayrıntıları hit değişkenine doldurmuş olur. out, bir C# yönteminin verdiğin değişken aracılığıyla ek bir değer döndürmesini sağlar. Bu mesafe ölçer, Space tuşuna bastığında neyi gösterdiğini 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 doğrultulduğunda Wall is 12 units away kaydını tutar. Diğer alanlar: hit.point, ışının yüzeye dünyada dokunduğu noktadır; hit.normal, o noktada yüzeyin baktığı yöndür (düz zeminde (0, 1, 0)); hit.transform ise çarpılan nesnenin Transform'udur. hit.collider.gameObject aracılığıyla nesneyle ilgili etiketi gibi diğer bilgilere de ulaşırsın.
hit değişkenini yalnızca if içinde oku. Işın hiçbir şeye çarpmazsa Raycast false döndürür ve hit işe yarar bir şey içermez: collider değeri null olur.
Görev
OrtaSilaha lazer nişangâhı ekle: lazerin düştüğü yerde kırmızı bir nokta.
Update()içindePhysics.Raycast(transform.position, transform.forward, out RaycastHit hit, range)çağrısını yap.- Bir şeye çarptığında
dot.gameObject.SetActive(true);çağrısını yap vedot.position = hit.point;olarak ayarla. - Hiçbir şeye çarpmadığında
dot.gameObject.SetActive(false);çağrısını yap.
“Oyna” düğmesine bas ve silahı döndür: nokta duvarın ve kasaların üzerinde kayar. Ardından “Kontrol et” 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.
}
}
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 DuvarKendi başına pratik yap: Unity playground