Cara Menambahkan Pergerakan Pemain di Godot Menggunakan GDScript
Table of content:
Menerapkan pergerakan pemain adalah aspek mendasar dalam menciptakan game yang menarik di Godot Game Engine. Pergerakan pemain memungkinkan pengguna untuk mengontrol karakter, menjelajahi dunia game, dan berinteraksi dengan berbagai elemen di lingkungan game.
Menyiapkan Game Godot
Untuk memulai, buat proyek 2D baru di Godot Game Engine. Kemudian, ikuti langkah-langkah berikut untuk menambahkan pergerakan pemain ke game Anda
Buat adegan baru dengan mengklik kanan Berkas sistem panel, lalu pilih Folder baru dan menamainya Adegan. Di dalam Adegan folder, klik kanan dan buat adegan 2D baru. Simpan dengan nama yang sesuai, misal, Pemain.tscn.
Kode yang digunakan dalam artikel ini tersedia di sini Repositori GitHub dan gratis untuk Anda gunakan di bawah lisensi MIT.
Tambah sebuah KarakterTubuh2D node ke tempat kejadian dengan mengklik Tambahkan Node tombol dan memilih KarakterTubuh2D dari perpustakaan simpul.
Dengan KarakterTubuh2D simpul yang dipilih, klik Tambahkan Node Anak tombol untuk menambahkan a Bentuk Tabrakan2D. Sesuaikan bentuk Bentuk Tabrakan2D untuk mencocokkan dimensi pemain. Anda dapat menggunakan bentuk persegi panjang untuk kesederhanaan.
Selanjutnya, tambahkan a Sprite2D komponen ke KarakterTubuh2D node dan pilih sprite yang sesuai untuk karakter pemain Anda.
Menambahkan Gerakan Pemain Menggunakan Input Keyboard
Sekarang, Anda dapat menambahkan pergerakan pemain menggunakan input keyboard ke Pemain.gd naskah.
Perpanjang KarakterTubuh2D node, atur kecepatan gerakan, dan dapatkan input dari tombol panah (ui_left, ui_right, ui_up, ui_down). Hitung kecepatan gerakan berdasarkan arah input, normalkan, lalu gerakkan pemain menggunakan bergerak_dan_bertabrakan berfungsi di _fisika_proses metode.
extends CharacterBody2Dvar speed = 300
func _physics_process(delta):
var input_dir = Vector2.ZERO
if Input.is_action_pressed("ui_left"):
input_dir.x -= 1
if Input.is_action_pressed("ui_right"):
input_dir.x += 1
if Input.is_action_pressed("ui_up"):
input_dir.y -= 1
if Input.is_action_pressed("ui_down"):
input_dir.y += 1
velocity = input_dir.normalized() * speed
move_and_collide(velocity * delta)
Menambahkan Rotasi
Untuk membuat pemain menghadap ke arah pergerakan, Anda dapat menambahkan rotasi pada pemain Anda. Perbarui Pemain.gd skrip sebagai berikut:
extends CharacterBody2D@export var speed = 400
@export var rotation_speed = 1.5
var rotation_direction = 0
func get_input():
rotation_direction = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
velocity = transform.x * (Input.get_action_strength("ui_up") - Input.get_action_strength("ui_down")) * speed
func _physics_process(delta):
get_input()
rotation += rotation_direction * rotation_speed * delta
move_and_slide()
Pemain akan memutar sesuai arah gerakan. Kecepatan putaran dapat diatur menggunakan Kecepatan rotasi variabel.
Menambahkan Gerakan Pemain Menggunakan Input Mouse
Sekarang, Anda dapat mengimplementasikan pergerakan pemain menggunakan input mouse untuk memindahkan pemain ke posisi klik mouse atau membuat pemain menghadap penunjuk mouse:
extends CharacterBody2D@export var speed = 300
func _physics_process(delta):
if Input.is_action_just_pressed("click"):
var target_position = get_global_mouse_position()
var direction = (target_position - global_position).normalized()
velocity = direction * speed * delta
move_and_collide(velocity)
Dalam kode ini, pemain akan bergerak menuju posisi klik mouse setiap kali klik tindakan dipicu. Kecepatan pemain dapat dikontrol menggunakan kecepatan variabel.
Selain itu, Anda juga dapat menerapkan rotasi berbasis mouse sebagai berikut:
extends CharacterBody2Dfunc _physics_process(delta):
var mouse_position = get_global_mouse_position()
var target_direction = (mouse_position - global_position).angle()
rotation = target_direction
Pada versi ini, sprite pemain akan langsung menghadap posisi penunjuk tetikus.
Termasuk Fitur Tambahan
Meskipun pergerakan dasar pemain penting untuk sebagian besar game, menambahkan fitur tambahan dapat membawa pengalaman pemain Anda ke level berikutnya. Berikut beberapa fitur menarik yang dapat Anda pertimbangkan untuk diterapkan dalam game Anda untuk meningkatkan pergerakan pemain:
Melompat
Menerapkan mekanisme lompat memungkinkan pemain menavigasi rintangan, mencapai platform yang lebih tinggi, dan menambahkan lapisan interaktivitas ekstra ke dunia game. Anda dapat mengontrol ketinggian lompatan dan menambahkan animasi agar menarik secara visual.
Lari atau Lari Cepat
Kemampuan dash memungkinkan pemain untuk bergerak cepat dalam ledakan singkat, yang berguna untuk menghindari musuh atau melintasi area yang menantang. Fitur ini menambahkan elemen dinamis pada gameplay dan meningkatkan rasa kontrol pemain.
Geser dan Panjat Dinding
Memperkenalkan mekanisme geser dan panjat dinding memungkinkan pemain berinteraksi dengan permukaan vertikal. Pemain dapat meluncur ke bawah tembok, melakukan lompatan ke tembok, atau bahkan memanjat rintangan tertentu. Fitur ini sangat populer di game platformer.
Mekanika Platformer
Untuk game platformer, Anda dapat menggabungkan gravitasi, akselerasi, dan deselerasi untuk menciptakan pengalaman pergerakan yang mulus dan realistis. Menyempurnakan mekanisme ini dapat membuat permainan terasa lebih halus dan menyenangkan.
Ingat, kunci keberhasilan penerapan fitur tambahan terletak pada keseimbangan dan pengintegrasiannya secara mulus ke dalam gameplay. Setiap fitur harus melengkapi mekanisme pergerakan pemain inti dan berkontribusi pada pengalaman bermain game secara keseluruhan.
Praktik Terbaik untuk Menambahkan Pergerakan Pemain
Saat menerapkan pergerakan pemain di game Godot Anda, mengikuti praktik terbaik ini tidak hanya akan membuat kode Anda lebih bersih dan efisien tetapi juga berkontribusi pada pengalaman pemain yang lebih baik:
Kekhawatiran Terpisah
Atur logika pergerakan pemain Anda ke dalam fungsi atau skrip terpisah. Misalnya, buat skrip untuk menangani input pemain, skrip lain untuk pergerakan karakter, dan mungkin skrip lain untuk menangani animasi.
Memisahkan masalah membuat kode Anda lebih modular dan lebih mudah dikelola, serta mendorong kolaborasi yang lebih baik di antara anggota tim.
Gunakan Waktu Delta
Saat menghitung pergerakan, selalu kalikan nilai Anda dengan waktu delta (delta) untuk memastikan pergerakan mulus di berbagai frame rate. Waktu Delta mewakili waktu yang telah berlalu sejak frame terakhir dan memastikan bahwa pemain bergerak dengan kecepatan yang konsisten, terlepas dari performa perangkat.
Batasi Kecepatan Gerakan
Tetapkan kecepatan gerakan maksimum untuk pemain Anda untuk menghindari gerakan kecepatan tinggi yang tidak diinginkan. Batasan ini dapat berguna untuk mencegah pemain melanggar fisika game atau menghadapi masalah deteksi tabrakan.
Pertimbangkan Lapisan Fisika dan Masker Tabrakan
Godot memungkinkan Anda mengonfigurasi lapisan tabrakan dan masker untuk berbagai objek di game Anda. Mengatur lapisan dan masker ini dengan benar memungkinkan Anda mengontrol objek mana yang dapat berinteraksi satu sama lain selama pergerakan. Misalnya, Anda mungkin ingin pemain membenturkan benda padat tetapi tidak melewati benda tidak padat.
Tambahkan Umpan Balik Visual dan Audio
Menerapkan efek visual dan isyarat suara untuk memberikan umpan balik kepada pemain selama bergerak. Misalnya, menambahkan partikel debu saat pemain berlari atau suara langkah kaki dapat meningkatkan kesan imersi dan keterlibatan.
Menjadikan Godot Games Lebih Menarik Dengan Pergerakan Pemain
Mekanika gerakan yang lancar dan responsif dapat meningkatkan pengalaman pemain secara keseluruhan secara signifikan. Baik itu menjelajahi dunia yang luas, menghindari musuh, atau memecahkan teka-teki, pergerakan pemain yang mulus meningkatkan pengalaman dan membuat pemain ketagihan.
Dengan menerapkan pergerakan pemain menggunakan GDScript dan node CharacterBody2D, Anda dapat menciptakan pengalaman gameplay yang dinamis dan menyenangkan. Kemampuan untuk bergerak bebas dan berinteraksi dengan dunia game memberdayakan pemain dan membuat mereka merasa terhubung dengan lingkungan virtual.
Pertanyaan Umum
Q: Sekarang Pemain Saya Bergerak, Bagaimana Cara Memeriksa Tabrakan?
Anda dapat menggunakan mesin fisika bawaan dan memanggil fungsi move_and_collide() untuk mendeteksi tabrakan antar objek di Godot.
Q: Bagaimana dengan Pergerakan Pemain di Unity, Apakah Prosesnya Mirip?
Anda akan menulis kode Anda dalam C# dan bekerja dalam tiga dimensi, tetapi pergerakan dasar pemain di Unity cukup mirip.
T: Dan Bagaimana dengan Perpustakaan Arkade Python?
Kembali ke 2D, dan setelah Anda menguasai Godot, pergerakan pemain di Arcade akan mudah dilakukan.