Menu
CoddyTech

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.

challenge icon

Görev

Orta

Birisi sensörün altında dururken dükkânın kapısının açılmasını sağla.

  1. Update() içinde Physics.Raycast(transform.position, Vector3.down, reach) koşulunu test et: yere ulaşmadan duran, aşağı doğru düz bir ışın; uzunluğu reach birimdir.
  2. Koşul doğru olduğunda door.SetActive(false); çağır; else bloğunda ise door.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

Kendi başına pratik yap: Unity playground