Belajar Unity untuk Pemula - Input

Tags


Karakter pemain yang berjalan ke kiri, kanan, depan, belakang, dan sebagainya pada umumnya dikendalikan oleh input.

Game yang dibuat dengan Unity bisa dikendalikan dengan berbagai perangkat input seperti keyboard, mouse, joystick, dan sebagainya.

Agar game objek dapat merespon keyboard, mouse, joystick, dan perangkat input lainnya di Unity, diperlukan class Input.

Berikut ini adalah contoh kode untuk menjalankan game objek sepanjang sumbu forward dengan input keyboard maupun joystick:

using UnityEngine;
using System.Collections;

public class Orang : MonoBehaviour {

    void Update() {
  Vector3 axis = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
        transform.Translate(axis * Time.deltaTime);
    }
}

Kenapa sama untuk keyboard dan joystick?

Karena kedua perangkat input tersebut sama sama berasal dari konfigurasi di menu Edit | Project Settings | Input.

Seperti yang bisa dilihat pada gambar ini:

<unity-project-settings-input.png>

Walaupun konfigurasi keduanya berbeda, method yang digunakan sama-sama Input.GetAxis.

Sekarang, bagaimana dengan Input.GetKeyDown?

using UnityEngine;
using System.Collections;

public class Kucing : MonoBehaviour 
{
    void Update() 
 {
  if(Input.GetKeyDown("space"))
  {
   Debug.Log("meong");
  }
    }
}

Kali ini, input harus berasal dari nama input yang sudah ditentukan.

Parameter yang diisi pada method Input.GetKeyDown harus sah seperti:

  • Normal keys: “a”, “b”, “c” …
  • Number keys: “1”, “2”, “3”, …
  • Arrow keys: “up”, “down”, “left”, “right”
  • Keypad keys: “[1]”, “[2]”, “[3]”, “[+]”, “[equals]”
  • Modifier keys: “right shift”, “left shift”, “right ctrl”, “left ctrl”, “right alt”, “left alt”, “right cmd”, “left cmd”
  • Mouse Buttons: “mouse 0”, “mouse 1”, “mouse 2”, …
  • Joystick Buttons (from any joystick): “joystick button 0”, “joystick button 1”, “joystick button 2”, …
  • Joystick Buttons (from a specific joystick): “joystick 1 button 0”, “joystick 1 button 1”, “joystick 2 button 0”, …
  • Special keys: “backspace”, “tab”, “return”, “escape”, “space”, “delete”, “enter”, “insert”, “home”, “end”, “page up”, “page down”
  • Function keys: “f1”, “f2”, “f3”, …


Jadi kita tidak bisa mendeteksi joystick dan keyboard bersamaan dengan cara yang sama.

Hal yang sama berlaku juga untuk Input.GetKey. Bedanya, yang ini mendeteksi tombol sedang ditahan.

Pada platform mobile, input bisa dideteksi dengan Input.GetTouch:

using UnityEngine;
using System.Collections;

public class TouchDetector : MonoBehaviour
{
    void Update()
    {
        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
        {
            Debug.Log("touch terjadi").
        }
    }
}

Sedangkan pada virtual joystick, walaupun prosesnya sama dengan tadi, tapi ada tambahan elemen UI yang berperan.

Jadi, kita bisa memandangn virtual joystick sebagai salah satu bentuk UI.

Sehingga, kita tidak perlu memikirkan class Input ketika membuat virtual joystick.

Untuk mempelajari cara membuat virtual joystick sederhana, Anda bisa cek kursus yang saya tawarkan ini (link).