Pertama, buat objek yang akan bertindak sebagai lawan. Beri lawan Anda hari Musuh.
Jika lawan dan sosok bertabrakan, tag masuk akal karena skrip dapat menyampaikan bahwa hanya objek dengan tag musuh yang relevan sebagai lawan.
Buat skrip C # yang disebut "Musuh".
Buka skrip di Visual Studio. Pertama, lawan membutuhkannya Orang tegar-Komponen:
rigidbody2D rigidbody pribadi;
Sekarang kita membutuhkan fungsi bangun. Ini menjadi aktif beberapa saat sebelum dimulai.
batal Bangun ()
{
Rigidbody = GetComponent ();
}
Sekarang tambahkan komponen Rigidbody2D di Unity ke lawan.
Sekarang seret skrip baru ke lawan.
Pergerakan lawan
Sekarang Anda ingin lawan bergerak ke arah tertentu berdasarkan kecepatan:
Kami membutuhkan: kecepatan float pribadi
Kekosongan publik Bergerak (Vektor 2 arah)
{
body.velocity = new Vector2 (direction.x * speed, body.velocity.y);
}
Agar bidang private float spped muncul di inspektur, letakkan di depannya: [SerializeField]
Arah lawan harus berubah:
Kita butuh:
Arah gerakan Vector2 pribadi;
Sekarang yang berikut ini ditentukan:
gerakanArah = arah;
Anda bertukar direction.x dengan movementDirection.x.
Anda memerlukan fungsi pembaruan untuk mengubah arah:
Bergerak (movementDirection);
Setelah bergerak ke satu arah, lawan akan kembali ke arah lain.
Tabrakan dengan lawan
Selanjutnya, lawan harus "menemukan tabrakan".
private void OnCollisionEnter2D (Tabrakan Collision2D)
{
jika (collision.gameObject.CompareTag ("Musuh"))
{
arah gerakan * = -1f;
}
Masukkan yang berikut ini sebagai movementDirection dalam fungsi bangun:
motionDirection = Vektor2.kanan;
Dia masih membutuhkannya Collider. Tambahkan collider 2D yang cocok.
Tambahkan penumbuk kedua yang lebih kecil ke bagian atas lawan. Collider ke-2 juga harus menjadi pemicu. Collider dirancang untuk menghilangkan lawan ketika pemain melompat di atasnya.
Musuh bertelur
Klik kanan di jendela hierarki untuk membuat objek kosong dan beri nama sebagai spawner.
Musuh muncul, tergantung pada arah spawner. Selanjutnya kita membutuhkan SpawnerScript.
Di dalamnya Anda menentukan penampilan lawan.
Pertama kita perlu:
[SerialisasiField]
Melalui SerializeField, prefab muncul langsung di spawner.
musuh pribadi [] musuh;
Anda juga membutuhkan variabel:
[SerialisasiField]
swasta float spawnTimeDelay, startSpawnDelay;
Dengan ini kami mengatur waktu pemijahan dan interval antara pemijahan.
Kami juga butuh:
boo publik selesai;
Ini menetapkan lawan terakhir untuk spawner. Manajer Game memiliki "pengawasan" dari para spawner. Bagian selesai menentukan bahwa level selesai ketika tidak ada lagi musuh di tempat kejadian dan spawner dari semua musuh dikirim ke level.
Sekarang coroutine diperlukan untuk musuh bertelur.
Lawan juga harus bergerak ke arah tertentu.
Terakhir, harus diperiksa apakah pemijahan telah selesai.
IEnumorator diperlukan untuk coroutine. Unity menangani coroutine Latar belakang. Mereka juga terjadi di setiap frame:
bibit IEnumerator pribadi ()
Sekarang sistem disuruh menunggu beberapa detik hingga lawan muncul:
hasilkan kembalikan WaitForSeconds baru ();
Kami menunggu startSpawnDeley:
hasilkan, kembalikan WaitForSeconds baru (startSpawnDelay);
Untuk informasi waktu yang kami butuhkan:
untuk (int i = 0; i <panjang; i ++)
Setiap lawan harus respawn nomor tertentu setelah waktu tertentu.
Itu sebabnya ada juga: musuh. Panjang:
for (int i = 0; i <enemies.Lenght; i ++)
Sekarang referensi ke lawan harus dibuat:
Musuh musuhInstance = Instantiate (musuh [i], transform.position);
Transform.position memberitahu sistem bahwa lawan harus muncul di spawner.
Quaternion.identity mengacu pada rotasi.
Musuh musuhInstance = Instansi (musuh [i], transform.position, Quaternion.identity);
Pergerakan lawan dapat didefinisikan secara lebih rinci:
musuhInstance.Move (transform.right);
Kami menambahkan yield return new WaitforSeconds (SpawnTimeDelay); sekali lagi, kali ini dengan SpawnTimeDelay.
Artinya setiap kali musuh muncul, Unity menunggu waktu khusus itu hingga spawning berikutnya.
Terakhir, sistem perlu memeriksa apakah pemijahan telah selesai:
selesai = i> = musuh. Panjang - 1;
Akhirnya, Coroutnie harus dimulai:
batal mulai ()
{
StartCoroutine (Spawn ());
}
Skrip terakhir untuk spawning akan terlihat seperti ini:
Dalam skrip spawn terlampir, Anda sekarang dapat mengatur frekuensi spawn:
Anda sekarang dapat menarik dan melepaskan lawan ke dalam skrip Spawner: