Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Ketapel mengisi daya selama tombol Space ditekan dan melaporkan tembakan saat tombol dilepas.

  1. Di Update(), selama Input.GetKey(KeyCode.Space) bernilai true, tambahkan Time.deltaTime ke charge.
  2. Saat Input.GetKeyUp(KeyCode.Space), catat "Charge: " + charge, lalu atur charge ke 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

Latihan sendiri: Playground Unity