Temukan cara menambahkan elemen tak terduga ke gameplay Anda.

Dalam pengembangan game, elemen keacakan dan ketidakpastian dapat berkontribusi besar pada pengalaman gameplay secara keseluruhan. Salah satu cara khusus untuk memperkenalkan elemen semacam itu adalah melalui objek bergerak acak, yang menambah lapisan interaksi dan tantangan ekstra.

Jika Anda bekerja dengan Godot, Anda dapat memperoleh efek ini menggunakan GDScript, bahasa skrip asli Godot.

Menyiapkan Game Godot Anda

Sebelum memulai, atur adegan permainan 2D dasar di mesin permainan Godot. Buat adegan 2D baru dan tambahkan a KarakterBody2D simpul untuk karakter pemain. Itu KarakterBody2D node adalah elemen utama untuk merepresentasikan karakter yang dapat bergerak dan berinteraksi dengan lingkungannya.

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

Tambahkan dua simpul anak ke karakter pemain: a TabrakanBentuk2D dengan bentuk persegi panjang, dan a Sprite2D untuk representasi grafis pemain.

instagram viewer

Untuk menambahkan mobilitas pada karakter, Anda dapat menggunakan kode GDScript berikut:

extends CharacterBody2D

var speed = 200

func _physics_process(delta):
var velocity = Vector2()

if Input.is_action_pressed('ui_right'):
velocity.x += 1

if Input.is_action_pressed('ui_left'):
velocity.x -= 1

if Input.is_action_pressed('ui_down'):
velocity.y += 1

if Input.is_action_pressed('ui_up'):
velocity.y -= 1

velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)

Tentukan variabel, kecepatan, untuk kecepatan gerakan pemain Anda. Itu _fisika_proses (delta) fungsi mengontrol gerakan karakter dalam menanggapi masukan pemain. Normalisasikan kecepatan dan arah karakter untuk memastikan gerakan yang konsisten terlepas dari arahnya.

Membuat Objek Statis Dengan StaticBody2D

Selanjutnya, buat objek yang dapat berinteraksi dengan pemain Anda. Contoh berikut menunjukkan pembuatan objek statis menggunakan Tubuh Statis2D simpul:

extends StaticBody2D

func _ready():
var collision_shape = CollisionShape2D.new()
collision_shape.shape = RectangleShape2D.new()
add_child(collision_shape)

Menambahkan Algoritma Gerakan Acak untuk Objek Statis

Sekarang objek statis Anda sudah siap, saatnya menambahkan keacakan ke gim Anda. Untuk melakukan ini, Anda dapat menggunakan algoritma gerakan acak sederhana:

extends StaticBody2D

var speed = 100
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()

func _physics_process(delta):
position += direction * speed * delta

Tentukan kecepatan objek statis Anda. Juga, buat arah Vector2 dan inisialisasi dengan nilai acak antara -1 dan 1 untuk kedua sumbu.

Dalam _fisika_proses (delta) fungsi, menambah posisi objek dengan produk arah, kecepatan, dan delta waktu, menyebabkannya bergerak ke arah dengan kecepatan tertentu.

Posisi dan Lintasan Acak untuk Objek Statis

Anda dapat meningkatkan keacakan dan ketidakpastian dengan tidak hanya memvariasikan kecepatan dan arah objek, tetapi juga posisi awal dan lintasannya.

extends StaticBody2D

var speed = randf_range(50, 150)
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()

func _ready():
var val1 = randf_range(0, get_viewport().size.x)
var val2 = randf_range(0, get_viewport().size.y)
position = Vector2(val1, val2)

func _physics_process(delta):
position += direction * speed * delta

Di sini kecepatan adalah nilai acak antara 50 dan 150. Posisi awal objek ditentukan secara acak dalam ukuran viewport di _siap() fungsi dan posisi objek diperbarui di _fisika_proses (delta) berfungsi seperti sebelumnya.

Menyesuaikan Kecepatan, Arah, dan Keacakan

Anda dapat mendesain gameplay yang lebih interaktif dan menarik dengan memanipulasi kecepatan, arah, dan keacakan gerakan untuk objek statis. Anda dapat membuat kontrol ini menggunakan GDScript:

extends StaticBody2D

var speed = randf_range(50, 150)
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()
var speed_variation_rate = 0.5
var direction_variation_rate = 0.5

func _ready():
var val1 = randf_range(0, get_viewport().size.x)
var val2 = randf_range(0, get_viewport().size.y)
position = Vector2(val1, val2)

func _physics_process(delta):
randomize_speed_and_direction()
position += direction * speed * delta

func randomize_speed_and_direction():
if randf() < speed_variation_rate:
speed = randf_range(50, 150)

if randf() < direction_variation_rate:
direction = Vector2(value, value).normalized()

Fitur Tambahan untuk Objek Bergerak Acak Anda

Sementara gerakan acak dasar menambahkan dinamika yang tidak dapat diprediksi ke dalam game Anda, ada banyak fitur tambahan yang dapat Anda tambahkan untuk lebih menyempurnakan game Anda. Beberapa contoh termasuk:

Variasi Warna

Mirip dengan cara Anda mengacak kecepatan dan arah objek, Anda juga dapat mengacak warnanya. Ini dapat menambahkan aspek yang lebih hidup dan menarik secara visual ke game Anda. Anda dapat melakukan ini dengan mengubah memodulasi milik sprite.

sprite.modulate = Color(randf(), randf(), randf())

Variasi Ukuran

Mengubah ukuran objek secara acak menambah tingkat kesulitan dan ketidakpastian lainnya. Pemain harus terus beradaptasi dengan perubahan ukuran objek. Anda dapat mengubah ukuran objek dengan menyesuaikannya skala Properti:

sprite.scale = Vector2(randf_range(0.5, 2.0), randf_range(0.5, 2.0))

Pemijahan Objek

Alih-alih memiliki jumlah objek bergerak acak yang tetap, Anda dapat menerapkan sistem yang memunculkan objek baru secara berkala atau dalam kondisi tertentu. Ini bisa menambah tingkat kesulitan baru karena pemain perlu menyesuaikan strategi mereka karena lebih banyak objek muncul di layar.

Umur Objek

Selain memunculkan objek baru, Anda juga dapat membuat objek secara otomatis menghancurkan dirinya sendiri setelah jangka waktu tertentu. Ini dapat mencegah layar menjadi terlalu berantakan dan menjaga gameplay tetap segar.

Interaksi

Pikirkan tentang menambahkan interaksi spesifik antara pemain dan objek bergerak. Misalnya, tabrakan dengan objek tertentu dapat meningkatkan skor pemain, mengubah kecepatan pemain, atau bahkan mengubah lingkungan permainan. Anda juga bisa memungkinkan pemain untuk melompat saat berdiri di atas platform.

Praktik Terbaik untuk Menambahkan Objek Bergerak Acak

Saat menambahkan objek bergerak acak, penting untuk mempertimbangkan beberapa praktik terbaik untuk memastikan game yang seimbang dan menarik:

Pertimbangan Kinerja

Meskipun tergoda untuk menambahkan objek sebanyak mungkin, ingat setiap objek meningkatkan beban komputasi pada mesin game. Selalu uji game Anda pada perangkat keras target untuk memastikan kinerjanya tidak terpengaruh secara negatif.

Menyeimbangkan Keacakan dan Playabilitas

Sementara objek acak dapat menambah ketidakpastian yang menyenangkan, terlalu banyak keacakan dapat menyebabkan frustrasi. Pastikan untuk menguji secara ekstensif untuk mencapai keseimbangan yang tepat antara tantangan dan kesenangan.

Tabrakan dan Respons

Pastikan game menangani tabrakan antara pemain dan objek dengan tepat. Objek bergerak acak dapat menyebabkan skenario tabrakan yang tidak terduga, jadi rencanakan hal ini dan uji secara menyeluruh.

Kejelasan Visual

Objek bergerak acak harus menonjol dari latar belakang dan elemen non-interaktif lainnya. Ini membantu pemain untuk dengan cepat memahami situasi permainan dan merencanakan tindakan mereka sesuai dengan itu. Anda juga bisa menambahkan efek suara ke objek Anda untuk membuatnya menonjol.

Dampak Objek Bergerak Acak pada Game Godot Anda

Objek bergerak acak dapat berkontribusi secara signifikan untuk membuat game Godot Anda lebih menarik. Mereka memperkenalkan elemen ketidakpastian yang membuat pemain tetap waspada. Setiap kali seorang pemain memulai permainan, ia akan menyapa mereka dengan konfigurasi objek yang berbeda, menambah replayability-nya.

Selain itu, karena pemain tidak dapat memprediksi jalur objek yang bergerak, mereka harus tetap fokus dan responsif untuk menavigasi lingkungan game