Physics.Raycast
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 35 / 71.
Raycast, bir noktadan belirli bir yönde görünmez bir çizgi gönderir ve bir collider'a çarpıp çarpmadığını bildirir. Physics.Raycast(origin, direction, maxDistance), çizgi üzerinde maxDistance birim içinde bir collider varsa true, yoksa false döndürür. Bu araba, burnunun 2 birimden daha yakınındaki herhangi bir şey olduğunda fren yapar:
public float brakeDistance = 2f;
void Update()
{
if (Physics.Raycast(transform.position, transform.forward, brakeDistance))
{
Debug.Log("Brake!");
}
}transform.forward arabayla birlikte döner, bu nedenle ışın her zaman arabanın burnunun önüne bakar; Vector3.forward ise her zaman dünyanın z ekseni boyunca ilerler. Işın arabanın merkezinden, kendi collider'ının içinden başlar ve bir ışın, başladığı yerin içindeki bir collider'ı asla bildirmez; bu yüzden araba kendisini algılamaz. maxDistance parametresini belirtmezsen ışın sonsuza kadar ilerler: araba haritanın öteki ucundaki bir duvar için fren yapar.
Işınlar çizilenleri değil, collider'ları algılar: Renderer'ı olup collider'ı olmayan bir nesne onlar için görünmezdir; tetikleyici bir collider ise çarpma olarak sayılır. Test ederken Debug.DrawRay(transform.position, transform.forward * brakeDistance, Color.red), ışını Unity'nin Scene görünümünde çizer.
Görev
OrtaBirisi sensörün altında dururken dükkânın kapısının açılmasını sağla.
Update()içindePhysics.Raycast(transform.position, Vector3.down, reach)koşulunu test et: yere ulaşmadan duran, aşağı doğru düz bir ışın; uzunluğureachbirimdir.- Koşul doğru olduğunda
door.SetActive(false);çağır;elsebloğunda isedoor.SetActive(true);çağır.
“Oyna” düğmesine bas ve Visitor'ı sensörün altına yürüt: kapı açılır ve Visitor'ın arkasından kapanır. Ardından “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
public class DoorSensor : MonoBehaviour
{
public GameObject door;
public float reach = 3f;
void Update()
{
// Sensor'dan aşağı doğru gönderilen ışın bir şeye çarptığı sürece kapıyı aç.
}
}
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