Merhaba Unity geliştiricileri! Bu yazıda, Unity oyun motorunda sık kullanılan bir metot olan Input.GetKeyUp() metodunu detaylı bir şekilde inceleyeceğiz. Bu metot, oyuncunun bir tuşu bıraktığı anda tetiklenen olayları yönetmemizi sağlar. Input.GetKeyDown() metodunun aksine, tuşun basılı tutulması süresince değil, yalnızca tuş bırakıldığında bir kerelik işlem yapmamızı garanti eder.
Input.GetKeyUp() Metodunun Temelleri
Input.GetKeyUp() metodu, Unity’nin Input sınıfının bir üyesidir. Parametre olarak bir KeyCode enum değerini alır ve bu tuşun bırakılıp bırakılmadığını boolean bir değer olarak döndürür. Tuş bırakıldıysa true, bırakılmadıysa false döndürür.
Kod Örneği: Basit Kullanım
using UnityEngine;
public class GetKeyUpExample : MonoBehaviour
{
void Update()
{
if (Input.GetKeyUp(KeyCode.Space))
{
Debug.Log("Boşluk tuşu bırakıldı!");
}
}
}
Bu basit örnekte, her Update() çağrısında Input.GetKeyUp(KeyCode.Space) fonksiyonu kontrol edilir. Eğer oyuncunun boşluk tuşu bırakılmışsa, konsola “Boşluk tuşu bırakıldı!” mesajı yazdırılır. Update() fonksiyonunun her karede çalıştığını unutmayın, bu nedenle tuş bırakıldığında sadece bir kere mesaj yazdırılır.
Input.GetKeyUp() ile Daha Karmaşık Senaryolar
Input.GetKeyUp() metodu, basit örneklerin ötesinde daha karmaşık oyun mekaniklerinin oluşturulmasında da kullanılabilir. Örneğin, bir atlama mekaniği oluşturabiliriz:
Kod Örneği: Atlama Mekaniği
using UnityEngine;
public class JumpMechanic : MonoBehaviour
{
public float jumpForce = 10f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
if (Input.GetKeyUp(KeyCode.Space) && isGrounded())
{
rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
}
}
bool isGrounded()
{
// Yer kontrolü için basit bir örnek. Daha gelişmiş yer kontrolü için raycast kullanın.
return transform.position.y < 1f;
}
}
Bu örnekte, oyuncunun boşluk tuşunu bırakması ve yerdeyse (isGrounded() fonksiyonu ile kontrol edilir) bir yukarı doğru kuvvet uygulanır. isGrounded() fonksiyonu bu örnekte basitleştirilmiş bir yer kontrolü yapmaktadır. Gerçekçi bir oyun için raycast kullanarak daha hassas bir yer kontrolü uygulamanız önerilir.
Farklı Tuşlar ve Input Manager
Input.GetKeyUp() metodu, sadece KeyCode enum değerlerini değil, aynı zamanda Input Manager’da tanımladığınız özelleştirilmiş tuşları da destekler. Input Manager’ı kullanarak, farklı platformlarda farklı tuş atamaları yapabilirsiniz.
Input Manager Kullanımı
Input Manager’ı Unity editöründe Edit > Project Settings > Input Manager yolunu izleyerek açabilirsiniz. Burada yeni tuş atamaları tanımlayabilir veya var olanları düzenleyebilirsiniz. Ardından, kodunuzda bu yeni tuşları kullanabilirsiniz.
Önemli Notlar
Performans: Input.GetKeyUp() metodu, her Update() çağrısında kontrol edildiği için, çok sayıda tuş kontrolü yapıyorsanız performans düşüşüne neden olabilir. Performansı optimize etmek için, gereksiz kontrol işlemlerini azaltın veya daha performanslı yöntemler kullanın.
Input System (Yeni): Unity’nin yeni Input Sistemi, daha esnek ve performanslı bir giriş yönetimi sunar. Yeni projelerde Input Sistemini kullanmanızı öneririz. Ancak, eski projelerde Input.GetKeyUp() metodu hala kullanılabilir.
Bu yazıda, Input.GetKeyUp() metodunun temel kullanımını ve bazı örneklerini inceledik. Bu metot, oyunlarınıza etkileşim katmak için güçlü bir araçtır. Farklı senaryolarda nasıl kullanılacağını keşfetmek için deneyler yapmanızı ve Input Manager’ı kullanarak özelleştirme yapmanızı öneririm. [YOUTUBE_VIDEO_BURAYA]




