Input Actions
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 46 dari 56.
Menguji tombol satu per satu mengikat skrip pada keyboard. Action menamai tindakan pemain, sedangkan proyek mencantumkan tombol keyboard, stik, dan tombol gamepad yang memicunya. Proyek Unity 6 baru dilengkapi dengan sekumpulan action tersebut (aset InputSystem_Actions, yang ditetapkan sebagai action untuk seluruh proyek). Map Player-nya memiliki Move (WASD, tombol panah, dan stik kiri gamepad), Look (mouse atau stik kanan), Attack (tombol kiri mouse dan Enter), Interact (E, ditekan terus), Crouch (C), Jump (Space dan tombol selatan gamepad), Previous dan Next (1 dan 2), serta Sprint (Left Shift). Semuanya aktif sejak awal, dan InputSystem.actions.FindAction("Jump") mengambil salah satunya berdasarkan nama. Derek capit dengan tampilan samping ini bergerak pada sumbu x dan y, lalu mencapit dengan 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!");
}
}Action ditemukan sekali, di Start, lalu disimpan dalam field InputAction. Move memberikan Vector2: x adalah kanan dan kiri, y adalah atas dan bawah pada tombol keyboard, dan nilainya dinormalisasi, sehingga W dan D yang ditekan bersamaan memberikan (0.71, 0.71), bukan (1, 1). Karena derek capit ini menggunakan tampilan samping, nilai y digunakan untuk ketinggian; game dengan tampilan dari atas akan menggunakannya untuk z. Action tombol memberikan respons seperti tombol keyboard: WasPressedThisFrame(), WasReleasedThisFrame(), dan IsPressed(). Ada dua kesalahan yang memicu error: nama yang salah eja membuat FindAction mengembalikan null (NullReferenceException saat pembacaan pertama), dan ReadValue<Vector3>() pada Move memicu InvalidOperationException begitu tombol ditekan, karena Move menggunakan Vector2.
Tantangan
SedangSurveyor memetakan hamparan salju dari atas, dan membawa flags (3) untuk ditanam sepanjang perjalanan. Script memiliki speed (4), flags, flagPrefab, dan sebuah list planted. Gunakan aksi proyek:
- Move menggerakkan surveyor melintasi salju dengan kecepatan
speedunit per detik: ke kanan dan kiri sepanjang sumbu x, ke atas dan bawah sepanjang sumbu z. - Setiap kali Jump ditekan, satu bendera ditanam: salinan
flagPrefabpada koordinat x dan z surveyor, di y 0.75, lalu ditambahkan keplanted. Aksi ini menggunakan satu dariflagsdan mencatat jumlah yang tersisa, sepertiFlags left: 2. Jika tidak ada bendera tersisa, Jump tidak menanam apa pun. - Setiap kali Attack ditekan (klik kiri), bendera yang terakhir ditanam dicabut: bendera itu dihancurkan dan dihapus dari list,
flagsbertambah satu, dan baris yang sama dicatat.
Tekan Play, tanam tiga bendera dan cabut satu, lalu tekan Check.
Coba sendiri
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()
{
// cari aksi Move, Jump, dan Attack
}
void Update()
{
// berjalan dengan Move, tancapkan bendera saat Jump, cabut satu bendera saat Attack
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Membangun Game Sungguhan
4Scene dan Level
Muat SceneMulai Ulang LevelLevel BerikutnyaPertahankan Antar-SceneRekap: Pilih Level10Proyek: Platformer 3D
LintasanPlatform Bergerak2Tombol dan Layar
Tombol dan onClickLambdaMenghubungkan di InspectorPanel Aktif dan NonaktifBilah KesehatanRangkuman: Toko Upgrade5Menyimpan dengan PlayerPrefs
Simpan AngkaMuat dengan Nilai DefaultSkor TertinggiSimpan PengaturanUlasan: Koin di Bank3Pengelola Game
Satu Skrip Menjalankan GameSingletonStatus GamePercabangan Berdasarkan StatusUlasan: Pengelola Ronde6Proyek: Pelari Tanpa Akhir
Tiga JalurRintangan di Depan9Sistem Input Baru
Dua Sistem InputKeyboard dan MouseDitekan pada Frame IniInput ActionsRangkuman: Pergantian Input