Pergerakan pemain memainkan peran penting dalam membuat game Godot lebih menarik. Pelajari cara menerapkannya.

Menerapkan pergerakan pemain adalah aspek mendasar dalam membuat 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 Mesin Game Godot. Lalu, ikuti langkah-langkah ini 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 pemandangan 2D baru. Simpan dengan nama yang sesuai, mis., Player.tscn.

Kode yang digunakan dalam artikel ini tersedia di sini repositori GitHub dan gratis untuk Anda gunakan di bawah lisensi MIT.

Tambah sebuah KarakterBody2D node ke TKP dengan mengklik Tambahkan Node tombol dan memilih KarakterBody2D dari perpustakaan simpul.

instagram viewer

Dengan KarakterBody2D node dipilih, klik Tambahkan Node Anak tombol untuk menambahkan TabrakanBentuk2D. Sesuaikan bentuk dari TabrakanBentuk2D untuk mencocokkan dimensi pemain. Anda dapat menggunakan bentuk persegi panjang untuk kesederhanaan.

Selanjutnya, tambahkan a Sprite2D komponen ke KarakterBody2D simpul dan pilih sprite yang sesuai untuk karakter pemain Anda.

Menambahkan Gerakan Pemain Menggunakan Input Keyboard

Sekarang, Anda dapat menambahkan gerakan pemain menggunakan input keyboard ke Pemain.gd naskah.

Perpanjang KarakterBody2D simpul, 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 CharacterBody2D

var 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 gerakan, Anda dapat menambahkan rotasi ke 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 ke arah gerakan. Kecepatan rotasi dapat disesuaikan dengan menggunakan Kecepatan rotasi variabel.

Menambahkan Gerakan Pemain Menggunakan Input Mouse

Sekarang, Anda dapat mengimplementasikan gerakan 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 mengimplementasikan rotasi berbasis mouse sebagai berikut:

extends CharacterBody2D

func _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 ke posisi pointer mouse.

Termasuk Fitur Tambahan

Meskipun pergerakan dasar pemain sangat penting untuk sebagian besar game, menambahkan fitur tambahan dapat meningkatkan pengalaman pemain Anda ke level berikutnya. Berikut adalah beberapa fitur menarik yang dapat Anda pertimbangkan untuk diterapkan di game Anda untuk meningkatkan pergerakan pemain:

Melompat

Menerapkan mekanika 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 untuk membuatnya menarik secara visual.

Dash atau Sprint

Kemampuan lari memungkinkan pemain bergerak cepat untuk ledakan singkat, yang dapat berguna untuk menghindari musuh atau melintasi area yang menantang. Fitur ini menambahkan elemen dinamis ke gameplay dan meningkatkan rasa kendali pemain.

Geser dan Panjat Tembok

Memperkenalkan mekanisme wall sliding dan climbing memungkinkan pemain untuk berinteraksi dengan permukaan vertikal. Pemain dapat meluncur ke bawah dinding, melakukan lompatan dinding, atau bahkan menskalakan rintangan tertentu. Fitur ini sangat populer di game platformer.

Mekanika Platformer

Untuk game platformer, Anda dapat menggabungkan gravitasi, akselerasi, dan deselerasi untuk menciptakan pengalaman gerakan yang mulus dan realistis. Menyempurnakan mekanisme ini dapat membuat game terasa lebih halus dan menyenangkan.

Ingat, kunci untuk berhasil mengimplementasikan fitur tambahan terletak pada menyeimbangkan dan mengintegrasikannya dengan mulus ke dalam gameplay. Setiap fitur harus melengkapi mekanisme pergerakan pemain inti dan berkontribusi pada pengalaman game secara keseluruhan.

Praktik Terbaik untuk Menambahkan Gerakan Pemain

Saat menerapkan pergerakan pemain di game Godot Anda, ikuti praktik terbaik berikut tidak hanya akan membuat kode Anda lebih bersih dan lebih efisien tetapi juga berkontribusi pada pemain yang lebih baik pengalaman:

Pisahkan Kekhawatiran

Atur logika gerakan pemain Anda ke dalam fungsi atau skrip terpisah. Misalnya, buat skrip untuk menangani masukan pemain, satu lagi untuk pergerakan karakter, dan mungkin satu lagi untuk menangani animasi.

Pemisahan masalah membuat kode Anda lebih modular dan lebih mudah dipelihara, 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 yang mulus di berbagai frekuensi gambar. Waktu delta mewakili waktu yang 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. Pembatasan ini berguna untuk mencegah pemain merusak fisika game atau menghadapi masalah dengan deteksi tabrakan.

Pertimbangkan Lapisan Fisika dan Topeng Tabrakan

Godot memungkinkan Anda mengonfigurasi lapisan tabrakan dan topeng untuk berbagai objek dalam gim Anda. Mengatur lapisan dan topeng ini dengan benar memungkinkan Anda untuk mengontrol objek mana yang dapat berinteraksi satu sama lain selama pergerakan. Misalnya, Anda mungkin ingin pemain bertabrakan dengan benda padat tetapi tidak melewati benda tidak padat.

Tambahkan Umpan Balik Visual dan Audio

Terapkan efek visual dan isyarat suara untuk memberikan umpan balik kepada pemain selama gerakan. Misalnya, menambahkan partikel debu saat pemain berlari atau suara langkah kaki dapat meningkatkan rasa pencelupan dan keterlibatan.

Membuat Game Godot Lebih Menarik Dengan Pergerakan Pemain

Mekanika gerakan yang lancar dan responsif dapat secara signifikan meningkatkan pengalaman pemain secara keseluruhan. Baik itu menjelajahi dunia yang luas, menghindari musuh, atau memecahkan teka-teki, pergerakan pemain yang mulus meningkatkan imersi dan membuat pemain terpikat.

Dengan mengimplementasikan 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.