Bir ray ile düzlemin kesişimini nasıl hesaplarsınız? Mouse ile zemine tıklanan noktayı bulan kodu yazın.

Cevap

Ray: P(t) = O + t * D (O başlangıç, D yön, t ≥ 0). Düzlem: normal n ve düzlem üzerindeki bir nokta P0 ile tanımlanır; düzlemdeki noktalar dot(P - P0, n) = 0 koşulunu sağlar.

Ray denklemini yerine koyunca:

t = dot(P0 - O, n) / dot(D, n)

  • dot(D, n) ≈ 0 ise ray düzleme paraleldir, kesişim yoktur (veya ray düzlemin içindedir).
  • t < 0 ise kesişim ray'in arkasındadır.
bool RayPlane(Vector3 origin, Vector3 dir, Vector3 planePoint, Vector3 normal, out Vector3 hit)
{
    hit = default;
    float denom = Vector3.Dot(dir, normal);
    if (Mathf.Abs(denom) < 1e-6f) return false;           // paralel
    float t = Vector3.Dot(planePoint - origin, normal) / denom;
    if (t < 0f) return false;                              // arkada
    hit = origin + dir * t;
    return true;
}

// Kullanım: top-down oyunda mouse'un zemindeki karşılığı (collider gerekmez)
void Update()
{
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    if (RayPlane(ray.origin, ray.direction, Vector3.zero, Vector3.up, out Vector3 p))
        aimTarget.position = p;
}

Unity'de aynı iş Plane yapısıyla yapılabilir: new Plane(Vector3.up, 0).Raycast(ray, out float enter).

Neden fizik raycast yerine? Sonsuz bir zemin düzlemi için matematiksel test collider gerektirmez, çok ucuzdur ve engellerin arkasındaki noktayı da verir (nişan alma için istenen davranış). Engelleri dikkate almak gerektiğinde ise Physics.Raycast kullanılır.

  1. Vektörlerde dot product ve cross product oyunlarda ne için kullanılır?OrtaOyun MatematiğiGame Dev
  2. AABB ve sphere çarpışma testleri matematiksel olarak nasıl yapılır? Hangisi ne zaman tercih edilir?OrtaOyun MatematiğiGame Dev
  3. Transform matrisleri nedir? Local space ile world space arasında nasıl dönüşüm yapılır?OrtaOyun MatematiğiGame Dev
  4. Quaternion ile Euler açıları arasındaki fark nedir? Gimbal lock nedir?ZorOyun MatematiğiGame Dev
  5. Lerp ve Slerp nedir? Lerp'ü Update içinde yanlış kullanmak neden sorun yaratır?OrtaOyun MatematiğiGame Dev
  6. Vektör normalize etmek ne demektir? Çapraz harekette neden gereklidir?KolayOyun MatematiğiGame Dev

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle