Menu
CoddyTech

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.

challenge icon

Tantangan

Sedang

Terbangkan 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 drift unit per detik; saat tombol panah kiri atau A ditekan, balon bergerak ke kiri.
  • Burner menyala saat Space atau tombol kiri mouse ditekan. Tampilkan flame hanya saat burner menyala.
  • Saat burner menyala, balon naik dengan kecepatan rise unit per detik. Saat burner mati, balon turun dengan kecepatan sink unit per detik, dan tidak pernah turun melewati groundY.

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
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Membangun Game Sungguhan