Menu
CoddyTech

Bu Karede Basıldı

Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 45 / 56.

isPressed, basılı tutulan her karede "şu anda basılı mı?" sorusunu yanıtlar. Her basışta bir kez gerçekleşmesi gereken bir şey için bir kontrolün iki yanıtı daha vardır: wasPressedThisFrame yalnızca tuşun veya düğmenin basıldığı karede true olur, wasReleasedThisFrame ise yalnızca yeniden bırakıldığı karede. Bunlar Input.GetKeyDown ve Input.GetKeyUp ile GetMouseButtonDown ve GetMouseButtonUp işlevlerinin yerini alır. Bu lastik damga, fare düğmesine basıldığında aşağı iner ve düğme bırakıldığında yukarı kalkar:

using UnityEngine;
using UnityEngine.InputSystem;

public class Stamp : MonoBehaviour
{
    public float drop = 0.5f;
    private int stamps;

    void Update()
    {
        Mouse mouse = Mouse.current;

        if (mouse.leftButton.wasPressedThisFrame)
        {
            transform.position += Vector3.down * drop;
            stamps++;
            Debug.Log("Stamp " + stamps);
        }
        if (mouse.leftButton.wasReleasedThisFrame)
        {
            transform.position += Vector3.up * drop;
        }
    }
}

Yarım saniye basılı tutulan bir tıklama, Stamp 1 iletisini bir kez günlüğe kaydeder, damgayı bir kez aşağı indirir ve bir kez yukarı kaldırır. İlk if içinde isPressed kullanılsaydı, aynı tıklama yaklaşık 30 damga iletisi kaydeder ve damgayı masanın içine 15 birim batırırdı. Tuşlar da aynı şekilde çalışır: Keyboard.current.spaceKey.wasPressedThisFrame, Space tuşuna her basışta bir kez true olur.

challenge icon

Görev

Orta

Sprinter başlangıç takozlarında bekler. Betiğinde speed (6) ve crouch (0.3) bulunur.

  • Space tuşuna basıldığında koşucu takozlara doğru çömelir: crouch birim aşağı hareket eder ve Set günlüğe kaydedilir.
  • Ardından Space tuşu bırakıldığında koşucu yeniden ayağa kalkar (crouch birim yukarı), Go! günlüğe kaydedilir ve koşu başlar: bundan sonra saniyede speed birim hızla +z yönünde koşar.
  • Space tuşunu basılı tutmak, her karede değil, yalnızca bir kez Set kaydeder. Koşucu koşmaya başladıktan sonra Space artık hiçbir şey yapmaz.

Space tuşunu Keyboard.current ile oku. Play düğmesine bas, Space tuşunu basılı tutup bırak, ardından Check düğmesine bas.

Kendin dene

using UnityEngine;
using UnityEngine.InputSystem;

public class Sprinter : MonoBehaviour
{
    public float speed = 6f;
    public float crouch = 0.3f;

    void Update()
    {
        // Space basılıyken: çömel ve Set çıktısını kaydet. Space bırakılınca: ayağa kalk, Go! çıktısını kaydet ve koş.
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler