Ditekan pada Frame Ini
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 45 dari 56.
isPressed menjawab pertanyaan "apakah tombol sedang ditekan sekarang?" di setiap frame selama tombol ditahan. Untuk sesuatu yang seharusnya terjadi sekali setiap kali tombol ditekan, sebuah kontrol punya dua jawaban tambahan: wasPressedThisFrame bernilai true hanya pada frame saat tombol keyboard atau tombol mouse ditekan, dan wasReleasedThisFrame hanya pada frame saat tombol dilepas. Keduanya menggantikan Input.GetKeyDown dan Input.GetKeyUp, serta GetMouseButtonDown dan GetMouseButtonUp. Stempel karet ini bergerak turun saat tombol mouse ditekan dan terangkat saat tombol dilepas:
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;
}
}
}Jika klik ditahan selama setengah detik, program mencatat Stamp 1 satu kali, menggerakkan stempel ke bawah satu kali, lalu mengangkatnya kembali satu kali. Jika kamu menggunakan isPressed pada if pertama, klik yang sama akan mencatat sekitar 30 stempel dan menenggelamkan stempel sejauh 15 unit ke dalam meja. Tombol keyboard bekerja dengan cara yang sama: Keyboard.current.spaceKey.wasPressedThisFrame bernilai true satu kali setiap kali tombol Spasi ditekan.
Tantangan
SedangPelari cepat menunggu di balok start. Skripnya memiliki speed (6) dan crouch (0.3).
- Saat tombol Space ditekan, pelari merunduk di balok start: ia bergerak turun sejauh
crouchunit, danSetdicatat. - Setelah itu, saat tombol Space dilepaskan, pelari berdiri kembali (naik sejauh
crouchunit),Go!dicatat, dan lari dimulai: mulai saat itu, pelari bergerak sepanjang +z dengan kecepatanspeedunit per detik. - Menahan tombol Space hanya mencatat
Setsatu kali, bukan setiap frame. Setelah pelari mulai berlari, tombol Space tidak melakukan apa-apa lagi.
Baca tombol Space dengan Keyboard.current. Tekan Jalankan, tahan Space lalu lepaskan, kemudian tekan Periksa.
Coba sendiri
using UnityEngine;
using UnityEngine.InputSystem;
public class Sprinter : MonoBehaviour
{
public float speed = 6f;
public float crouch = 0.3f;
void Update()
{
// Saat Space ditekan: jongkok dan catat Set. Saat Space dilepas: berdiri, catat Go!, lalu berlari.
}
}
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