Girdi Eylemleri
Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 46 / 56.
Κάθε φορά που ελέγχεις ένα πλήκτρο ξεχωριστά, δένεις ένα script με το πληκτρολόγιο. Μια ενέργεια περιγράφει τι κάνει ο παίκτης, ενώ το project ορίζει ποια πλήκτρα, μοχλοί και κουμπιά την ενεργοποιούν. Ένα νέο project του Unity 6 περιλαμβάνει ένα σύνολο ενεργειών (το asset InputSystem_Actions, ορισμένο ως οι ενέργειες για ολόκληρο το project). Στον χάρτη Player του υπάρχουν οι Move (WASD, τα βέλη και ο αριστερός μοχλός ενός gamepad), Look (το ποντίκι ή ο δεξιός μοχλός), Attack (το αριστερό κουμπί του ποντικιού και το Enter), Interact (E, όσο το κρατάς πατημένο), Crouch (C), Jump (Space και το κάτω κουμπί του gamepad), Previous και Next (1 και 2), καθώς και Sprint (Left Shift). Είναι ενεργοποιημένες από την αρχή, και η InputSystem.actions.FindAction("Jump") βρίσκει μία με βάση το όνομά της. Αυτός ο γερανός με αρπάγη, σε πλάγια όψη, κινείται στους άξονες x και y και αρπάζει με το Jump:
using UnityEngine;
using UnityEngine.InputSystem;
public class ClawCrane : MonoBehaviour
{
public float speed = 3f;
private InputAction moveAction;
private InputAction jumpAction;
void Start()
{
moveAction = InputSystem.actions.FindAction("Move");
jumpAction = InputSystem.actions.FindAction("Jump");
}
void Update()
{
Vector2 input = moveAction.ReadValue<Vector2>();
transform.position += new Vector3(input.x, input.y, 0f) * speed * Time.deltaTime;
if (jumpAction.WasPressedThisFrame())
Debug.Log("Grab!");
}
}Οι ενέργειες εντοπίζονται μία φορά, στη Start, και αποθηκεύονται σε πεδία InputAction. Η Move επιστρέφει ένα Vector2: το x είναι δεξιά και αριστερά, το y είναι πάνω και κάτω στα πλήκτρα, και η τιμή είναι κανονικοποιημένη. Έτσι, το W και το D μαζί δίνουν (0.71, 0.71) αντί για (1, 1). Ο γερανός φαίνεται από το πλάι, οπότε χρησιμοποιεί το y για το ύψος· ένα παιχνίδι σε κάτοψη θα το χρησιμοποιούσε για το z. Οι ενέργειες κουμπιών λειτουργούν όπως τα πλήκτρα: WasPressedThisFrame(), WasReleasedThisFrame() και IsPressed(). Δύο λάθη προκαλούν εξαίρεση: αν γράψεις λάθος το όνομα, η FindAction επιστρέφει null (και προκύπτει NullReferenceException κατά την πρώτη ανάγνωση), ενώ η κλήση της ReadValue<Vector3>() στη Move προκαλεί InvalidOperationException μόλις πατηθεί κάποιο πλήκτρο, επειδή η Move επιστρέφει Vector2.
Görev
OrtaAraştırmacı, yukarıdan görünen bir kar alanının haritasını çıkarır ve yol boyunca dikmek için flags (3) taşır. Betikte speed (4), flags, flagPrefab ve planted listesi bulunur. Projenin eylemlerini kullan:
- Move, araştırmacıyı saniyede
speedbirim hızla karda hareket ettirir: x ekseninde sağa ve sola, z ekseninde yukarı ve aşağı. - Jump tuşuna her basışta bir bayrak dikilir:
flagPrefabkopyası, araştırmacının x ve z koordinatlarında, y 0.75 konumunda oluşturulur veplantedlistesine eklenir.flagsdeğerinden bir eksilir ve geriye kalan sayıFlags left: 2gibi bir mesajla günlüğe kaydedilir. Bayrak kalmadığında Jump hiçbir şey dikmez. - Attack tuşuna her basışta (sol tıklama) en son dikilen bayrak sökülür: bayrak yok edilir ve listeden çıkarılır,
flagsbir artar ve aynı satır günlüğe kaydedilir.
Play'e bas, üç bayrak dik ve birini sök, ardından Check'e bas.
Kendin dene
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class Surveyor : MonoBehaviour
{
public float speed = 4f;
public int flags = 3;
public GameObject flagPrefab;
private List<GameObject> planted = new List<GameObject>();
void Start()
{
// Move, Jump ve Attack eylemlerini bul
}
void Update()
{
// Move ile yürü, Jump ile bir bayrak dik, Attack ile bir bayrağı sök
}
}
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