Projeni Saklama. Yayınla.
Moonline Network ile hemen paylaş.
Katıl →

Unity’de Raycast Kullanımı: Oyun Geliştirmede Temel Bir Araç

Nisan 5, 2026
Geliştirici Rehberi
5 Dakika Okuma Süresi
63 Görüntüleme
LEVEL UP: MOONLINE
Projelerini yükle, portfolyonu oluştur.
START GAME

Unity’de Raycast Kullanımı, oyun geliştiricilerinin sanal dünyayla etkileşim kurmasını sağlayan temel mekaniklerden biridir. Uzman bir oyun geliştiricisi olarak, bu güçlü aracı doğru şekilde anlamak ve uygulamak, oyunlarınızın kalitesini ve etkileşimini önemli ölçüde artıracaktır.

Raycast Nedir ve Neden Önemlidir?

Raycast, Unity motorunun fizik sisteminin bir parçasıdır. Belirli bir noktadan belirli bir yöne doğru sanal bir ışın (ray) göndererek, bu ışının yol üzerindeki herhangi bir Collider ile çarpışıp çarpışmadığını kontrol etmenizi sağlar. Bu sayede:

Unity’de Temel Raycast Uygulaması

Raycast’i kullanmak için genellikle Physics.Raycast metodunu kullanırız. Bu metodun çeşitli aşırı yüklemeleri (overloads) bulunur, ancak en yaygın olanı bir başlangıç noktası, bir yön ve isteğe bağlı olarak maksimum mesafe ve katman maskesi (Layer Mask) alır.

Raycast Metodunun Parametreleri

Physics.Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance, int layerMask)

Basit Bir Raycast Örneği

Aşağıdaki Unity programlama örneği, kameranın merkezinden ileri doğru 10 birim mesafeye bir Raycast gönderir ve eğer bir şeye çarparsa konsola bilgi yazdırır:


using UnityEngine;

public class SimpleRaycast : MonoBehaviour
{
    public float maxRayDistance = 10f;
    public LayerMask targetLayer; // Inspector'dan ayarlanabilir

    void Update()
    {
        // Kameranın merkezinden ileri doğru bir ışın oluştur
        Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));
        RaycastHit hit;

        // Işını gönder ve çarpan nesneyi kontrol et
        if (Physics.Raycast(ray, out hit, maxRayDistance, targetLayer))
        {
            Debug.Log("Raycast çarptı: " + hit.collider.name + " (" + hit.point + ")");

            // Çarpan nesneye bir komut gönderme veya renk değiştirme gibi işlemler yapılabilir
            // Örneğin: hit.collider.GetComponent<Interactable>()?.Interact();
        }
    }

    // Geliştirme sırasında Raycast'i görmek için
    void OnDrawGizmos()
    {
        if (Camera.main != null)
        {
            Gizmos.color = Color.red;
            Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));
            Gizmos.DrawRay(ray.origin, ray.direction * maxRayDistance);
        }
    }
}

RaycastHit Bilgilerini Kullanma

RaycastHit yapısı, bir çarpışma meydana geldiğinde çok değerli bilgiler sağlar:

Bu bilgiler sayesinde çarptığınız nesnenin özelliklerine erişebilir, etki noktasına partikül efektleri ekleyebilir veya nesnenin yüzeyine göre tepkiler oluşturabilirsiniz. Özellikle oyun fiziği temelli etkileşimlerde bu veriler hayati öneme sahiptir.

Projeni Saklama. Yayınla.
Moonline Network ile oyununu anında paylaş,
limitsiz içerik yükle, topluluğa ulaş.
Platforma Katıl →

Layer Mask ile Performans ve Kontrol

LayerMask, Raycast’in yalnızca belirli katmanlardaki nesneleri dikkate almasını sağlayarak hem performansı artırır hem de oyun mantığınız üzerinde daha fazla kontrol sağlar. Örneğin, sadece “Interactable” veya “Ground” katmanındaki nesnelerle etkileşim kurmak isteyebilirsiniz.


// Örnek LayerMask kullanımı
public LayerMask interactableLayer; 

void CheckForInteractables()
{
    Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));
    RaycastHit hit;

    if (Physics.Raycast(ray, out hit, 5f, interactableLayer))
    {
        Debug.Log("Etkileşilebilir bir nesneye çarptı: " + hit.collider.name);
    }
}

Inspector’dan interactableLayer değişkenine istediğiniz katmanları atayabilirsiniz. Bu, gereksiz çarpışma kontrollerini ortadan kaldırarak performansı optimize etmenin harika bir yoludur.

Gelişmiş Raycast Teknikleri ve Alternatifler

Unreal Engine veya Godot gibi diğer oyun motorlarında da benzer “line trace” veya “ray query” mekanizmaları bulunur, ancak Unity‘deki uygulama ve terminoloji bu şekildedir.

Sonuç

Unity’de Raycast kullanımı, oyunlarınızdaki etkileşim ve fizik tabanlı mekanikler için olmazsa olmaz bir araçtır. Temel prensiplerini ve gelişmiş kullanım senaryolarını anladığınızda, oyuncularınıza daha zengin ve dinamik deneyimler sunabilirsiniz. Bu güçlü aracı projelerinizde doğru ve verimli bir şekilde kullanarak, oyun geliştirme serüveninizde bir adım öne geçin!

Moonline Network ile Oyun Geliştirme Yeteneklerinizi Geliştirin!

Oyun geliştirme yolculuğunuzda yalnız değilsiniz! Moonline Network, indie oyun geliştiricilerine yönelik kapsamlı kaynaklar, topluluk desteği ve uzman rehberliği sunar. İster Unity, ister Unreal Engine, ister Godot kullanıyor olun, projelerinizi bir sonraki seviyeye taşıyacak bilgi ve ilhamı Moonline Network‘te bulabilirsiniz. Hemen katılın ve hayallerinizdeki oyunu gerçeğe dönüştürmek için ilk adımı atın!

Moonline Network
Oyunlarını ve projelerini zahmetsizce yayınla.
Ücretsiz, sınırsız ve geliştirici odaklı.
Hemen Yayınla →
❮ Önceki Makale Sıfırdan Steam'e Oyun Yayınlama Rehberi: Tam Süreç Sonraki Makale ❯ İlk Oyun Yapımı Hataları: Acemi Geliştiricilerin Kaçınması Gereken Tuzaklar ve Çözümler
DİSCORD'A KATIL