Input sınıfı
- Oyun Geliştirme kursu
- Başlangıç
- Ders 43/83
- 4 dk
Input.GetKey ve Input.GetKeyDown ile klavye girdisini öğrenirsin.
Klavye Girdisi ve Input Sınıfı
Unity'de klasik girdi yönetimi için Input sınıfı kullanılır. Input.GetKey fonksiyonu, oyuncu belirtilen tuşa basılı tuttuğu sürece her karede true döner. Sürekli koşma veya ateş etme gibi basılı tutma gerektiren eylemlerde bu metot tercih edilir.
if (Input.GetKey(KeyCode.W))
{
Debug.Log("İleri yürünüyor");
}Tek Seferlik Tuş Vuruşu: GetKeyDown
Input.GetKeyDown, oyuncu tuşa ilk bastığı tek bir karede true döner ve parmağını çekip tekrar basana kadar bir daha tetiklenmez. Zıplama, menü açma veya tekli ateş gibi anlık eylemler için idealdir. Benzer şekilde Input.GetKeyUp ise tuş bırakıldığı anda tek bir karede tetiklenir.
if (Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("Zıplama tetiklendi!");
}Uygulama Klavye Kontrolü Yaz
Karakterin zıplama girdisini kontrol et. Input.GetKeyDown(KeyCode.Space) doğruysa Debug.Log("Ziplama"); çağrısı yap.
Başlangıç kodu
using System;
public enum KeyCode { Space, Escape }
public static class Input
{
public static bool GetKeyDown(KeyCode key) => key == KeyCode.Space;
}
public static class Debug
{
public static void Log(object message) => Console.WriteLine(message);
}
public class Program
{
public static void Main()
{
// Space tusuna basildiginda Debug.Log ile "Ziplama" yazdir
}
}Örnek çözüm
using System;
public enum KeyCode { Space, Escape }
public static class Input
{
public static bool GetKeyDown(KeyCode key) => key == KeyCode.Space;
}
public static class Debug
{
public static void Log(object message) => Console.WriteLine(message);
}
public class Program
{
public static void Main()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("Ziplama");
}
}
}Beklenen çıktı
Ziplama
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Oyuncunun W tuşunu basılı tutup tutmadığını her karede sürekli kontrol etmek için hangi metot kullanılır?
- Input.GetButton("Horizontal")
- Input.GetKeyDown(KeyCode.W)
- Input.GetKey(KeyCode.W) Doğru cevap
- Input.GetKeyUp(KeyCode.W)
Açıklama: Input.GetKey tuşa basılı tutulduğu her karede true döner; GetKeyDown ise yalnızca basıldığı ilk karede true döner.
2 Zıplama Tuşunu Yakala
if (Input.____(KeyCode.Space))
if (Input.GetKeyDown(KeyCode.Space))
Açıklama: Zıplama gibi anlık eylemler için tuşa ilk basıldığı kareyi yakalayan GetKeyDown metodu kullanılır.
3 Tuş Metotları Eşleştirmesi
| Kavram | Anlamı |
|---|---|
Input.GetKey |
Tuş basılı tutulduğu sürece true döner |
Input.GetKeyDown |
Tuşa basıldığı ilk karede true döner |
Input.GetKeyUp |
Tuş bırakıldığı karede true döner |
KeyCode.Space |
Boşluk tuşunun Unity kodu |