Menu
CoddyTech

Basılı, Basılı Tutulmuş, Bırakılmış

Coddy'nin Unity Journey'sinin Unity'de Script Yazmanın Temelleri bölümünün bir parçası. Ders 19 / 85.

Unity sana bir tuşla ilgili üç farklı bilgi verebilir ve bunların her biri Update() içinde sorulur:

  • Input.GetKeyDown(KeyCode.Space): Bu karede Space tuşuna basıldı mı? Her basışta bir kare boyunca true olur.
  • Input.GetKey(KeyCode.Space): Space tuşu şu anda basılı mı? Tuş basılı tutulduğu sürece her karede true olur.
  • Input.GetKeyUp(KeyCode.Space): Bu karede Space tuşu bırakıldı mı? Tuş bırakıldığında bir kare boyunca true olur.

Space tuşunu saniyede 60 kare hızında yarım saniye basılı tutarsan, GetKey 30 kare boyunca true olur; GetKeyDown bu karelerin ilkinde, GetKeyUp ise son karenin ardından gelen karede true olur. Her basışta bir kez ateş eden bir top GetKeyDown kullanır; GetKey kullanılırsa tek basışta 30 atış yapılır:

public int shots = 0;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        shots++;
        Debug.Log("Shots fired: " + shots);
    }
}

GetKeyUp, oyuncu tuşu bıraktığında gerçekleşen şeyler içindir; örneğin koşunun sona ermesi gibi. Üçü de yalnızca geçerli kare için yanıt verir; bu nedenle Update() içinde yer alırlar: her karede çalışır, oysa Start() bir kez çalışır ve basışların neredeyse tamamını kaçırır.

challenge icon

Görev

Kolay

Sapan, Space tuşu basılı tutulurken şarj olur ve bırakıldığında atışın sonucunu bildirir.

  1. Update() içinde, Input.GetKey(KeyCode.Space) true olduğu sürece Time.deltaTime değerini charge değişkenine ekle.
  2. Input.GetKeyUp(KeyCode.Space) olduğunda "Charge: " + charge değerini günlüğe yaz, ardından charge değerini 0 olarak ayarla.

“Oyna” düğmesine bas, Space tuşunu basılı tut ve bırak: Console'da Charge: 1.5 gibi bir satır görünür. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;

public class Slingshot : MonoBehaviour
{
    float charge = 0f;

    void Update()
    {
        // Space basılı tutulurken: charge her saniye 1 artar.
        // Space bırakıldığında: charge değerini logla, ardından tekrar 0 olarak ayarla.
    }
}

Unity'de Script Yazmanın Temelleri bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground