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.
Görev
OrtaSprinter’ı Space’e basarak başlat: çömelmek için aşağı, koşmak için yukarı.
Update()içinde,!runningveKeyboard.current.spaceKey.wasPressedThisFrameolduğunda:setdeğerini ayarla,crouchkadar aşağı hareket et,Setmesajını günlüğe yaz.setvewasReleasedThisFrameolduğunda:setdeğerini temizle,runningdeğerini ayarla,crouchkadar yukarı hareket et,Go!mesajını günlüğe yaz.runningdurumundayken, saniyedespeedbirim 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
1Ekrandaki Metinler
Canvas ve MetinSkoru GösterSayıları BiçimlendirGeri Sayım ZamanlayıcısıTekrar: Hız Göstergesi2Düğmeler ve Ekranlar
Düğmeler ve onClickLambda İfadeleriInspector'da Bağlantı KurmaPanelleri Açma ve KapamaCan ÇubuklarıTekrar: Yükseltme Mağazası5PlayerPrefs ile Kaydetme
Bir Sayı KaydetmeVarsayılan Değerle YüklemeEn Yüksek SkorAyarları KaydetmeTekrar: Bankadaki Paralar3Oyun Yöneticisi
Oyunu Tek Bir Betik YönetiyorSingletonOyun DurumlarıDuruma Göre GeçişÖzet: Tur Yöneticisi6Proje: Sonsuz Koşucu
Üç ŞeritÖnümüzde Engeller9Yeni Girdi Sistemi
İki Girdi SistemiKlavye ve FareBu Karede BasıldıGirdi EylemleriTekrar: Girdi DeğişimiKendi başına pratik yap: Unity playground