Oyun Kütüphanesi

E Tuşu Etkileşim Sistemi (Raycast)

Etkileşim & Input Unity C# 2
ETuşuEtkileşimSistemiRaycast .cs
C#
using UnityEngine;

// Etkileşilebilir her nesne bu interface'i implemente etmeli
public interface IInteractable
{
    void Interact();
    string GetInteractText(); // "Kapıyı Aç", "Nesneyi Al" gibi
}

public class PlayerInteraction : MonoBehaviour
{
    [Header("Etkileşim Ayarları")]
    public float interactRange = 3f;
    public LayerMask interactLayer;
    public Camera playerCamera;

    private IInteractable currentInteractable;

    void Update()
    {
        // Raycast ile önündeki etkileşilebilir nesneyi bul
        Ray ray = playerCamera.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));
        
        if (Physics.Raycast(ray, out RaycastHit hit, interactRange, interactLayer))
        {
            currentInteractable = hit.collider.GetComponent<IInteractable>();
        }
        else
        {
            currentInteractable = null;
        }

        // E tuşuna basıldığında etkileşim
        if (Input.GetKeyDown(KeyCode.E) && currentInteractable != null)
        {
            currentInteractable.Interact();
        }
    }

    // Etkileşim metnini UI'a bağlamak için kullan
    public string GetCurrentInteractText()
    {
        return currentInteractable != null 
            ? currentInteractable.GetInteractText() 
            : string.Empty;
    }
}

// ---- KULLANIM ÖRNEĞİ: Açılabilir Kapı ----
// public class Door : MonoBehaviour, IInteractable
// {
//     private bool isOpen = false;
//     public void Interact() { isOpen = !isOpen; /* animasyon vs */ }
//     public string GetInteractText() => isOpen ? "Kapıyı Kapat" : "Kapıyı Aç";
// }

Açıklama

Oyuncunun baktığı yönde Raycast atarak E tuşuna bastığında etkileşilebilir nesneleri bulan ve IInteractable interface'i çağıran sistem.

Etiketler

E Etkileşim Interact Raycast Interface

Nasıl Kullanılır?

1. Bu scripti Player'a ekle, Camera alanını doldur.

2. Etkileşilebilir nesnelere 'Interactable' Layer ver.

3. O nesnelere IInteractable interface'ini implemente eden script ekle.

4. E'ye bastığında Interact() çağrılır. En alttaki yorum satırında kapı örneği var.

Unity 2022+ ve Unity 6 ile uyumludur.

MonoBehaviour tabanlı scriptleri Assets klasörüne .cs olarak kaydedin.