Rangkuman: Pergantian Input
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 47 dari 56.
Tantangan
SedangWand gelembung ini ditulis untuk class Input lama. Wand ini berfungsi di proyek yang disetel ke Both, tetapi proyek ini disiapkan seperti proyek Unity 6 baru (Active Input Handling: Input System Package): tekan Play dan pemanggilan Input pertama akan memunculkan InvalidOperationException. Porting ke Input System, dengan mempertahankan semua fungsinya:
- Tombol panah atau WASD menggerakkan wand melintasi halaman rumput dengan kecepatan
speedunit per detik, tanpa bergerak lebih cepat secara diagonal. - Tekan Jump untuk meniup gelembung 1.5 unit di atas wand. Selama Jump ditekan, gelembung itu membesar sebesar
growRateper detik, hingga mencapaimaxSize. Saat tombol dilepas, ukuran gelembung dicatat, misalnyaBubble: 0.8. - Klik kiri untuk memecahkan semua gelembung dan mencatat jumlahnya, misalnya
Popped 3.
Gunakan action Move dan Jump dari proyek, serta Mouse.current, dan pastikan tidak ada pemanggilan Input. di dalam skrip. Tekan Play dan coba, lalu tekan Periksa.
Coba sendiri
using UnityEngine;
public class Wand : MonoBehaviour
{
public float speed = 4f;
public float growRate = 1f;
public float maxSize = 1.5f;
public GameObject bubblePrefab;
private Transform bubble;
void Update()
{
Vector3 move = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
transform.position += move.normalized * speed * Time.deltaTime;
if (Input.GetButtonDown("Jump"))
{
bubble = Instantiate(bubblePrefab, transform.position + Vector3.up * 1.5f, Quaternion.identity).transform;
}
if (Input.GetButton("Jump") && bubble != null)
{
float size = Mathf.Min(bubble.localScale.x + growRate * Time.deltaTime, maxSize);
bubble.localScale = Vector3.one * size;
}
if (Input.GetButtonUp("Jump") && bubble != null)
{
Debug.Log("Bubble: " + bubble.localScale.x.ToString("F1"));
bubble = null;
}
if (Input.GetMouseButtonDown(0))
{
GameObject[] bubbles = GameObject.FindGameObjectsWithTag("Bubble");
foreach (GameObject b in bubbles) Destroy(b);
Debug.Log("Popped " + bubbles.Length);
}
}
}
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