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.
Görev
OrtaSprinter 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:
crouchbirim aşağı hareket eder veSetgünlüğe kaydedilir. - Ardından Space tuşu bırakıldığında koşucu yeniden ayağa kalkar (
crouchbirim yukarı),Go!günlüğe kaydedilir ve koşu başlar: bundan sonra saniyedespeedbirim hızla +z yönünde koşar. - Space tuşunu basılı tutmak, her karede değil, yalnızca bir kez
Setkaydeder. 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ş.
}
}
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
1Ekrandaki Metinler
Canvas ve MetinSkoru GösterSayıları BiçimlendirGeri Sayım ZamanlayıcısıTekrar: Hız Göstergesi4Sahneler ve Bölümler
Bir Sahne YüklemeBölümü Yeniden BaşlatmaSonraki BölümSahneler Arasında SaklamaTekrar: Bölüm Seçimi10Proje: 3D Platform Oyunu
ParkurHareketli Platformlar2Düğ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öneticisi9Yeni Girdi Sistemi
İki Girdi SistemiKlavye ve FareBu Karede BasıldıGirdi EylemleriTekrar: Girdi Değişimi