Programming your first game/Input dengan mouse

From CPC Game Making
Revision as of 05:14, 15 July 2025 by Timothy (talk | contribs)

Bila diperhatikan, pemain masih belum mampu berinteraksi sama sekali dengan game kita. Maka, kita perlu menambah sedikit logika pemrograman agar Cookie di layar memberikan respons tertentu ketika diklik pemain.

Node scripting

Layar script editor yang masih kosong akan muncul setelah script file script dibuat untuk pertama kalinya

Klik kanan pada entri Sprite2D di kiri atas, lalu tekan "Attach Script". Secara default, file script ini akan disimpan di res://cookie.gd, sesuai dengan nama scene.

Tambahkan beberapa baris kode berikut. Simpan hasil modifikasi script dengan Ctrl+S.

func _input(event):
	if event is InputEventMouseButton:
		if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
			if is_pixel_opaque(get_local_mouse_position()):
				print("Clicked!")

Run project dan amati hasilnya.

Sebuah pesan singkat "Clicked!" akan dikeluarkan pada output terminal setiap kali pemain melakukan klik kiri dengan mouse pada area cookie.

Coba pahami kode yang diberikan tersebut.

  • if event is InputEventMouseButton:
    
    Di Godot, ada banyak InputEvent yang dapat diterima pada fungsi _input(), dari InputEventMouseButton untuk merepresentasikan mouse button yang ditekan, hingga InputEventScreenDrag untuk merepresentasikan gestur menggeser pada layar touchscreen.
  • if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
    
    Property button_index menunjukkan tipe mouse button yang terlibat dalam InputEvent (selain MOUSE_BUTTON_LEFT, ada pula MOUSE_BUTTON_RIGHT, MOUSE_BUTTON_WHEEL_UP, dll.).
    Dengan menggunakan property pressed, game hanya akan menghitung momen ketika pemain mulai menahan tombol kiri mouse sebagai sebuah klik.
    • if event.button_index == MOUSE_BUTTON_LEFT and not event.pressed:
      
      Seandainya kode dimodifikasi seperti ini, game hanya akan menghitung momen ketika pemain melepaskan tombol kiri mouse sebagai sebuah klik.
  • if is_pixel_opaque(get_local_mouse_position()):
    
    Fungsi get_local_mouse_position() memberikan posisi (x, y) kursor mouse. Fungsi is_pixel_opaque() memberikan nilai True hanya untuk nilai posisi yang tercakup dalam area tekstur gambar cookie. Dengan demikian, klik di luar batas gambar takkan menghasilkan apa-apa.

Dokumentasi

Bilamana ada fungsi yang kalian ingin pelajari lebih lanjut, tahan tombol Ctrl dan klik segmen kode yang dikehendaki. Editor akan segera membuka dokumentasi Godot, yang tersedia pula secara daring (https://docs.godotengine.org/en/stable/).

Try it yourself!

  1. Sekarang, game hanya akan bereaksi terhadap aksi klik kiri. Coba buat supaya cookie dapat menerima input klik kiri maupun kanan.

Berganti view di editor

Jangan lupa bahwa kalian bisa mengganti view dari 2D ke Script (atau sebaliknya) dari menu di bagian atas.

Bermain dengan sound effect

Klik kanan pada entri Sprite2D di scene tree, di kiri layar. Tambahkan sebuah child node, beri tipe AudioStreamPlayer2D.

Drag file "crumble.mp3" ke field Stream di menu Inspector. Pastikan bahwa node AudioStreamPlayer2D-lah yang terseleksi pada scene tree.