Keyboard dan Mouse
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 44 dari 56.
Input System memberikan sebuah object kepada setiap perangkat. Keyboard.current adalah keyboard, dan setiap tombol di dalamnya merupakan kontrol dengan nama: spaceKey, aKey, upArrowKey, atau Keyboard.current[Key.Space] untuk tombol apa pun berdasarkan nilai Key-nya. Mouse.current adalah mouse, dengan leftButton, rightButton, dan position. isPressed pada sebuah kontrol bernilai true di setiap frame saat tombol itu ditekan, seperti halnya Input.GetKey. Kapal selam ini menyelam dan naik ke permukaan dengan tombol panah serta menyalakan lampu sorotnya selama tombol mouse ditekan:
using UnityEngine;
using UnityEngine.InputSystem;
public class Submarine : MonoBehaviour
{
public float diveSpeed = 2f;
public Light searchlight;
void Update()
{
Keyboard keyboard = Keyboard.current;
if (keyboard == null) return; // tidak ada keyboard yang terhubung
if (keyboard.downArrowKey.isPressed)
transform.position += Vector3.down * diveSpeed * Time.deltaTime;
if (keyboard.upArrowKey.isPressed)
transform.position += Vector3.up * diveSpeed * Time.deltaTime;
searchlight.enabled = Mouse.current != null && Mouse.current.leftButton.isPressed;
}
}current adalah perangkat yang terakhir digunakan, dan nilainya null jika tidak ada perangkat: ponsel atau konsol mungkin tidak memiliki keyboard, dan pemeriksaan null mencegah script menimbulkan error di sana. Keyboard tidak memiliki sumbu, jadi tombol panah bawah dan S adalah dua tombol terpisah: kapal selam yang juga harus menyelam saat tombol S ditekan memeriksa keyboard.downArrowKey.isPressed || keyboard.sKey.isPressed. Mouse.current.position.ReadValue() memberikan posisi penunjuk sebagai Vector2 dalam piksel layar dari sudut kiri bawah, seperti Input.mousePosition.
Tantangan
SedangTerbangkan balon udara dengan Input System. Skripnya memiliki drift (2), rise (3), sink (1), groundY (2), dan flame, nyala api burner di bawah balon.
- Saat tombol panah kanan atau D ditekan, balon bergerak ke kanan (sepanjang +x) dengan kecepatan
driftunit per detik; saat tombol panah kiri atau A ditekan, balon bergerak ke kiri. - Burner menyala saat Space atau tombol kiri mouse ditekan. Tampilkan
flamehanya saat burner menyala. - Saat burner menyala, balon naik dengan kecepatan
riseunit per detik. Saat burner mati, balon turun dengan kecepatansinkunit per detik, dan tidak pernah turun melewatigroundY.
Gunakan Keyboard.current dan Mouse.current. Proyek ini disiapkan seperti proyek Unity 6 baru (Active Input Handling: Input System Package), jadi class Input memunculkan InvalidOperationException di sini. Tekan Play dan terbangkan balon, lalu tekan Check.
Coba sendiri
using UnityEngine;
using UnityEngine.InputSystem;
public class Balloon : MonoBehaviour
{
public float drift = 2f;
public float rise = 3f;
public float sink = 1f;
public float groundY = 2f;
public GameObject flame;
void Update()
{
// bergerak perlahan dengan tombol panah atau A dan D, nyalakan api dengan Space atau mouse
}
}
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