ADS

Menciptakan Musuh

 

Menciptakan musuh

Sekarang saatnya membuat musuh yang harus dihindari oleh pemain kita. Perilaku mereka tidak akan terlalu rumit: gerombolan akan muncul secara acak di tepi layar, memilih arah acak, dan bergerak dalam garis lurus.

Kita akan membuat suatu Mobadegan, yang kemudian dapat kita contohkan untuk membuat sejumlah monster independen di dalam permainan.

Pengaturan simpul

Klik Scene -> New Scene dari menu atas dan tambahkan node berikut:

Jangan lupa untuk mengatur anak-anak sehingga mereka tidak dapat dipilih, seperti yang Anda lakukan dengan adegan Pemain.

Pilih Mobnode dan atur propertinya di bagian RigidBody2D pada inspektur ke . Ini akan mencegah massa jatuh ke bawah.Gravity Scale0

Selain itu, di bawah bagian CollisionObject2D tepat di bawah bagian RigidBody2D , perluas grup Collision dan hapus centang 1di dalam Maskproperti. Ini akan memastikan massa tidak saling bertabrakan.

../../_images/set_collision_mask.webp

Siapkan AnimatedSprite2D seperti yang Anda lakukan untuk pemain. Kali ini, kita memiliki 3 animasi: flyswim, dan walk. Ada dua gambar untuk setiap animasi di folder seni.

Properti harus ditetapkan untuk setiap animasi individual. Sesuaikan untuk semua 3 animasi.Animation Speed3

../../_images/mob_animations.webp

Anda dapat menggunakan tombol "Putar Animasi" di sebelah kanan kolom input untuk melihat pratinjau animasi Anda.Animation Speed

Kami akan memilih salah satu animasi ini secara acak, sehingga massa akan memiliki variasi.

Seperti gambar pemain, gambar massa ini perlu diperkecil. Atur properti AnimatedSprite2D's Scaleke .(0.75, 0.75)

Seperti pada Playeradegan, tambahkan CapsuleShape2Duntuk tabrakan. Untuk menyelaraskan bentuk dengan gambar, Anda perlu menyetel Rotationproperti ke 90(di bawah "Transform" di Inspektur).

Simpan pemandangan.

Skrip musuh

Tambahkan skrip seperti Mobini:

extends RigidBody2D

using Godot;

public partial class Mob : RigidBody2D
{
// Don't forget to rebuild the project.
}

Sekarang mari kita lihat sisa skripnya. Di sini _ready()kita memutar animasi dan secara acak memilih salah satu dari tiga jenis animasi:

func _ready():
var mob_types = $AnimatedSprite2D.sprite_frames.get_animation_names()
$AnimatedSprite2D.play(mob_types[randi() % mob_types.size()])

public override void _Ready()
{
var animatedSprite2D = GetNode<AnimatedSprite2D>("AnimatedSprite2D");
string[] mobTypes = animatedSprite2D.SpriteFrames.GetAnimationNames();
animatedSprite2D.Play(mobTypes[GD.Randi() % mobTypes.Length]);
}

Pertama, kita mendapatkan daftar nama animasi dari sprite_frames properti AnimatedSprite2D. Ini mengembalikan Array yang berisi ketiga nama animasi: .["walk", "swim", "fly"]

Kita kemudian perlu memilih bilangan acak antara 0dan 2untuk memilih salah satu nama ini dari daftar (indeks array dimulai pada 0). memilih bilangan bulat acak antara dan .randi() % n0n-1

Bagian terakhir adalah membuat massa menghapus diri mereka sendiri saat mereka meninggalkan layar. Hubungkan screen_exited()sinyal node VisibleOnScreenNotifier2Dke Mobdan tambahkan kode ini:

func _on_visible_on_screen_notifier_2d_screen_exited():
queue_free()

// We also specified this function name in PascalCase in the editor's connection window.
private void OnVisibleOnScreenNotifier2DScreenExited()
{
QueueFree();
}

Ini melengkapi adegan Massa .

Setelah pemain dan musuh siap, di bagian selanjutnya, kita akan menyatukan mereka dalam adegan baru. Kita akan membuat musuh muncul secara acak di sekitar papan permainan dan bergerak maju, mengubah proyek kita menjadi permainan yang dapat dimainkan.

Tidak ada komentar:

Posting Komentar