Ditekan, Ditahan, Dilepas
Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 19 dari 85.
Unity dapat memberi tahu tiga hal berbeda tentang sebuah tombol, dan masing-masing diperiksa di Update():
Input.GetKeyDown(KeyCode.Space): apakah tombol Space ditekan pada frame ini? Nilainya true pada satu frame untuk setiap kali tombol ditekan.Input.GetKey(KeyCode.Space): apakah tombol Space sedang ditekan sekarang? Nilainya true pada setiap frame selama tombol Space ditahan.Input.GetKeyUp(KeyCode.Space): apakah tombol Space dilepas pada frame ini? Nilainya true pada satu frame, saat tombol dilepas.
Tahan tombol Space selama setengah detik pada 60 frame per detik, dan GetKey bernilai true pada 30 frame, GetKeyDown pada frame pertama, dan GetKeyUp pada frame setelah frame terakhir. Meriam yang menembak sekali setiap kali tombol ditekan menggunakan GetKeyDown; dengan GetKey, satu kali menekan tombol akan menembakkan 30 peluru:
public int shots = 0;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
shots++;
Debug.Log("Shots fired: " + shots);
}
}GetKeyUp digunakan untuk menangani hal yang terjadi saat pemain melepas tombol, seperti sprint yang berakhir. Ketiganya hanya memberikan jawaban untuk frame saat ini, itulah sebabnya semuanya digunakan di Update(): fungsi ini berjalan pada setiap frame, sedangkan Start() berjalan sekali dan akan melewatkan hampir semua penekanan tombol.
Tantangan
MudahKetapel mengisi daya selama tombol Space ditekan dan melaporkan tembakan saat tombol dilepas.
- Di
Update(), selamaInput.GetKey(KeyCode.Space)bernilai true, tambahkanTime.deltaTimekecharge. - Saat
Input.GetKeyUp(KeyCode.Space), catat"Charge: " + charge, lalu aturchargeke 0.
Tekan tombol “Main”, tahan Space lalu lepaskan: Console menampilkan baris seperti Charge: 1.5. Lalu tekan tombol “Periksa”.
Coba sendiri
using UnityEngine;
public class Slingshot : MonoBehaviour
{
float charge = 0f;
void Update()
{
// Saat Space ditekan dan ditahan: charge bertambah 1 setiap detik.
// Saat Space dilepas: catat nilai charge ke log, lalu atur kembali ke 0.
}
}
Semua pelajaran di Dasar-Dasar Scripting Unity
1Dasar-Dasar C# di Unity
Halo, UnityVariabelDesimal Memerlukan fTeks di ConsoleVariabel yang Menyimpan NilaiIf dan ElseBandingkan AngkaUlasan: Pengumpul Koin7Perulangan dan method
Ulangi dengan forPerulangan di dalam perulanganTulis methodMethod yang Mengembalikan NilaiarrayUlasan: Tangga10Menemukan Benda
Cari Berdasarkan NamaTagCari Berdasarkan TipeReferensi Lebih Baik daripada FindNull di UnityRangkuman: Koin Terdekat13Proyek: Hindari Balok
Karakter PelariBalok dari Langit2Buat Bergerak
Tempatkan KubusBergerak Setiap FrameBerputar Setiap DetikKemudikan dengan TombolRangkuman: Kemudikan Kubus5Vektor
Menjumlahkan VektorArahRuang Lokal dan DuniaKecepatan DiagonalJarak AntarobjekVector3 adalah StructRangkuman: Pilot Drone8GameObjects dan Komponen
Referensi di InspectorAmbil KomponenKomponen yang HilangTambahkan KomponenRequireComponentTampilkan dan SembunyikanRingkasan: Sakelar Lampu6Transformasi dan Hierarki
Objek Induk dan AnakKibarkan BenderaSkalaMelihat BendaBergerak Menuju TitikRekap: Bulan yang MengorbitLatihan sendiri: Playground Unity