Unity'de raycasting, 3D uzayda bir doğru veya ışın kullanarak bir noktadan başka bir noktaya doğru bir ışın çizmeyi ve bu ışının yolu üzerindeki nesneleri tespit etmeyi sağlayan bir tekniktir. Raycasting, oyun geliştirme sürecinde özellikle nesneler arası çarpışma tespiti, ışın tabanlı vuruş algılama, hedef tespiti gibi birçok farklı senaryoda kullanılır.
Ray Oluşturma
İlk adım, ışını oluşturmaktır. Ray gibi Unity sınıflarını kullanarak bir ışın tanımlayabilirsiniz. Başlangıç noktası ve yönü belirleyerek bir ışın oluşturursunuz.
Ray ray = new Ray(baslangicPozisyonu, yon);Raycast Hit
Physics.Raycast gibi fonksiyonlarla oluşturduğunuz ışını sahne üzerinde gönderirsiniz. Bu işlem sırasında ışının üzerinden geçtiği nesneleri RaycastHit ile algılayabilirsiniz.
if (Physics.Raycast(ray, out RaycastHit hit, mesafe, layerMask))
{
// Işının çarptığı bir nesne bulunduğunda yapılacak işlemler
// hit, çarpışma bilgilerini içerir (çarpan nesne, çarpma noktası, normali, vs.)
Vector3 hitPosition = hit.point;
GameObject hittedObject = hit.collider.gameObject;
}Örnek Kod
using UnityEngine;
public class RaycastExample : MonoBehaviour
{
public Transform baslangicPozisyonu;
public float mesafe = 10f;
public LayerMask layerMask;
void Update()
{
Ray ray = new Ray(baslangicPozisyonu.position, baslangicPozisyonu.forward);
if (Physics.Raycast(ray, out RaycastHit hit, mesafe, layerMask))
{
// Işının çarptığı bir nesne bulunduğunda yapılacak işlemler
Debug.Log("Bir nesneye çarpıldı: " + hit.collider.gameObject.name);
// Örneğin, çarpma noktasına bir şey yapılabilir veya çarpan nesneye erişilebilir.
}
}
}Bu örnek, her güncelleme döngüsündebaşlangıç noktasından bir ışın gönderir ve belirtilen mesafe içinde bir nesneyle çarpışırsa bu durumu Debug.Log ile belirtir.
Raycasting, birçok farklı senaryoda kullanılabilir ve örnek kodlarda gösterildiği gibi belirli nesnelerin algılanması, hedeflerin bulunması veya çarpışmaların tespiti gibi birçok farklı durumda işlevsel olabilir.