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 46 / 60.

isPressed, basılı tutulduğu her karede "şu anda basılı mı?" sorusunu yanıtlar. Her basışta yalnızca bir kez gerçekleşmesi gereken bir şey için bir denetimin iki yanıtı daha vardır: wasPressedThisFrame, yalnızca tuşa veya düğmeye basıldığı karede true olur; wasReleasedThisFrame ise yalnızca tuş veya düğme bırakıldığı karede true olur. 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 mesajını bir kez kaydeder, damgayı bir kez aşağı ve bir kez yukarı hareket ettirir. İlk if içinde isPressed kullanılsaydı, aynı tıklama yaklaşık 30 damga kaydeder ve damgayı masanın 15 birim içine batırırdı. Tuşlar da aynı şekilde çalışır: Keyboard.current.spaceKey.wasPressedThisFrame, Boşluk tuşuna her basışta bir kez true olur.

challenge icon

Görev

Orta

Sprinter’ı Space’e basarak başlat: çömelmek için aşağı, koşmak için yukarı.

  1. Update() içinde, !running ve Keyboard.current.spaceKey.wasPressedThisFrame olduğunda: set değerini ayarla, crouch kadar aşağı hareket et, Set mesajını günlüğe yaz.
  2. set ve wasReleasedThisFrame olduğunda: set değerini temizle, running değerini ayarla, crouch kadar yukarı hareket et, Go! mesajını günlüğe yaz.
  3. running durumundayken, saniyede speed birim hızla +z yönünde hareket et.

“Oyna” düğmesine bas, Space tuşunu basılı tut ve bırak: Konsol’da önce Set, ardından Go! görünür. Sonra “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;
using UnityEngine.InputSystem;

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

    private bool set;
    private bool running;

    void Update()
    {
        // Space tuşuna basılınca: çömel ve Set mesajını günlüğe kaydet. Space tuşu bırakılınca: ayağa kalk, Go! mesajını günlüğe kaydet ve koş.
    }
}

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

Kendi başına pratik yap: Unity playground