Programming your first game/Input dengan mouse: Difference between revisions
Created page with "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 == thumb Klik kanan pada entri Sprite2D di kiri atas, lalu tekan "Attach Script"." |
|||
| (8 intermediate revisions by the same user not shown) | |||
| Line 3: | Line 3: | ||
== Node scripting == | == Node scripting == | ||
[[File:Attach_script_to_Sprite2D.png|thumb]] Klik kanan pada entri Sprite2D di kiri atas, lalu tekan "Attach Script". | [[File:Attach_script_to_Sprite2D.png|thumb]] [[File:Empty_script.png|thumb|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 <code>res://cookie.gd</code>, sesuai dengan nama scene. {{Clear}} | ||
Tambahkan beberapa baris kode berikut. Simpan hasil modifikasi script dengan Ctrl+S. | |||
<syntaxhighlight lang="gdscript" line> | |||
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!") | |||
</syntaxhighlight> | |||
Run project dan amati hasilnya. | |||
[[File:Clicked.png]] | |||
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. | |||
* <syntaxhighlight lang="gdscript">if event is InputEventMouseButton:</syntaxhighlight> Di Godot, ada banyak InputEvent yang dapat diterima pada fungsi <code>_input()</code>, dari InputEventMouseButton untuk merepresentasikan mouse button yang ditekan, hingga InputEventScreenDrag untuk merepresentasikan gestur menggeser pada layar touchscreen. | |||
* <syntaxhighlight lang="gdscript">if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:</syntaxhighlight> Property <code>button_index</code> menunjukkan tipe mouse button yang terlibat dalam InputEvent (selain <code>MOUSE_BUTTON_LEFT</code>, ada pula <code>MOUSE_BUTTON_RIGHT</code>, <code>MOUSE_BUTTON_WHEEL_UP</code>, dll.). <br>Dengan menggunakan property <code>pressed</code>, game hanya akan menghitung momen ketika pemain mulai <i>menahan</i> tombol kiri mouse sebagai sebuah klik. | |||
** <syntaxhighlight lang="gdscript">if event.button_index == MOUSE_BUTTON_LEFT and not event.pressed:</syntaxhighlight> Seandainya kode dimodifikasi seperti ini, game hanya akan menghitung momen ketika pemain <i>melepaskan</i> tombol kiri mouse sebagai sebuah klik. | |||
* <syntaxhighlight lang="gdscript">if is_pixel_opaque(get_local_mouse_position()):</syntaxhighlight> Fungsi <code>get_local_mouse_position()</code> memberikan posisi (x, y) kursor mouse. Fungsi <code>is_pixel_opaque()</code> memberikan nilai <code>True</code> bilamana diberikan input posisi yang tercakup dalam area tekstur gambar cookie. Dengan demikian, klik di luar batasan gambar takkan menghasilkan apa-apa. | |||
=== Dokumentasi === | |||
Kalau ada fungsi yang kalian ingin pelajari lebih lanjut, tahan tombol Ctrl dan klik keyword yang dikehendaki. Editor akan segera membuka dokumentasi Godot, yang tersedia pula secara daring ([https://docs.godotengine.org/en/stable/ https://docs.godotengine.org/en/stable/]). | |||
{{Info try it|Sekarang, game hanya akan bereaksi terhadap aksi klik kiri. Coba buat supaya cookie dapat menerima input klik kiri maupun kanan.}} | |||
=== Berganti view di editor === | |||
[[File:Top.png|thumb]] Jangan lupa bahwa kalian bisa mengganti view dari 2D ke Script (atau sebaliknya) dari menu di bagian atas. {{Clear}} | |||
== Bermain dengan sound effect == | |||
Kemudian, kita akan tambahkan sebuah sound effect ketika cookie diklik. | |||
[[File:Add_child_node_to_cookie.jpg|thumb]] Klik kanan pada entri Sprite2D di scene tree, di kiri layar. Tambahkan sebuah child node, beri tipe AudioStreamPlayer2D. | |||
[[File:Crumble.gif]] Drag file <code>crumble.mp3</code> ke field Stream di menu Inspector. Pastikan bahwa node AudioStreamPlayer2D-lah yang terseleksi pada scene tree. | |||
Tambahkanlah satu line berikut pada script <code>cookie.gd</code>. | |||
<syntaxhighlight lang="gdscript" line> | |||
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()): | |||
$AudioStreamPlayer2D.play() # play sound | |||
print("Clicked!") | |||
</syntaxhighlight> | |||
Run project; cookie kini akan mengeluarkan suara bila diklik. | |||
Latest revision as of 23:45, 21 July 2025
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


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.
- Di Godot, ada banyak InputEvent yang dapat diterima pada fungsi
if event is InputEventMouseButton:
_input(), dari InputEventMouseButton untuk merepresentasikan mouse button yang ditekan, hingga InputEventScreenDrag untuk merepresentasikan gestur menggeser pada layar touchscreen. - Property
if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
button_indexmenunjukkan tipe mouse button yang terlibat dalam InputEvent (selainMOUSE_BUTTON_LEFT, ada pulaMOUSE_BUTTON_RIGHT,MOUSE_BUTTON_WHEEL_UP, dll.).
Dengan menggunakan propertypressed, game hanya akan menghitung momen ketika pemain mulai menahan tombol kiri mouse sebagai sebuah klik.- Seandainya kode dimodifikasi seperti ini, game hanya akan menghitung momen ketika pemain melepaskan tombol kiri mouse sebagai sebuah klik.
if event.button_index == MOUSE_BUTTON_LEFT and not event.pressed:
- Fungsi
if is_pixel_opaque(get_local_mouse_position()):
get_local_mouse_position()memberikan posisi (x, y) kursor mouse. Fungsiis_pixel_opaque()memberikan nilaiTruebilamana diberikan input posisi yang tercakup dalam area tekstur gambar cookie. Dengan demikian, klik di luar batasan gambar takkan menghasilkan apa-apa.
Dokumentasi
Kalau ada fungsi yang kalian ingin pelajari lebih lanjut, tahan tombol Ctrl dan klik keyword yang dikehendaki. Editor akan segera membuka dokumentasi Godot, yang tersedia pula secara daring (https://docs.godotengine.org/en/stable/).
Try it yourself!
- 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
Kemudian, kita akan tambahkan sebuah sound effect ketika cookie diklik.

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.
Tambahkanlah satu line berikut pada script cookie.gd.
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()):
$AudioStreamPlayer2D.play() # play sound
print("Clicked!")
Run project; cookie kini akan mengeluarkan suara bila diklik.
