Pertama, buat objek yang akan bertindak sebagai lawan. Berikan musuh anda hari Musuh.

Sekiranya lawan dan angka bertembung, tag masuk akal kerana skrip dapat menyampaikan bahawa hanya objek dengan tag musuh yang relevan sebagai lawan.
Buat skrip C # yang dipanggil "Musuh".

Buka skrip dalam Visual Studio. Pertama pihak lawan memerlukan satu Jasad tegar-Komponen:
persendirian rigidbody2D;
Sekarang kita memerlukan fungsi terjaga. Ia menjadi aktif beberapa saat sebelum permulaan.
batal terjaga ()
{
Rigidbody = GetComponent ();
}
Sekarang tambahkan komponen Rigidbody2D dalam Unity ke lawan.

Sekarang seret skrip baru ke lawan.

Pergerakan lawan
Sekarang anda mahu lawan bergerak ke arah tertentu berdasarkan kelajuan:
Kami memerlukan: kelajuan apungan persendirian
Pindah kekosongan awam (Vektor 2 arah)
{
body.velocity = Vector2 baru (speed.x * speed, body.velocity.y);
}
Sehingga medan pelayaran peribadi muncul di pemeriksa, letakkan di depannya: [SerializeField]
Arah lawan harus berubah:
Kita perlu:
Pergerakan Vector2 peribadiDirection;
Sekarang perkara berikut ditentukan:
pergerakanDirection = arah;
Anda menukar arah.x dengan pergerakanDirection.x.
Anda memerlukan fungsi kemas kini untuk menukar arah:
Pindah (pergerakanDirection);
Setelah bergerak ke satu arah, lawan kembali ke arah yang lain.
Pertembungan dengan lawan
Tambahan pula, pihak lawan mesti "menemui perlanggaran".
kekosongan peribadi OnCollisionEnter2D (perlanggaran Collision2D)
{
jika (collision.gameObject.CompareTag ("Musuh"))
{
pergerakanDirection * = -1f;
}
Masukkan yang berikut sebagai arahan pergerakan dalam fungsi terjaga:
pergerakanDirection = Vector2.right;
Dia masih memerlukan satu Collider. Tambahkan pelanggar 2D yang sepadan.
Tambahkan collider ke-2 yang lebih kecil ke bahagian atas lawan. Collider ke-2 juga harus menjadi pencetus. Collider direka untuk menghilangkan lawan ketika pemain melompat di atasnya.
Musuh bertelur
Klik kanan di tetingkap hierarki untuk membuat objek kosong dan menamakannya sebagai spawner.

Musuh muncul, bergantung pada arah spawner. Seterusnya kita memerlukan SpawnerScript.

Di dalamnya anda menentukan penampilan lawan.
Pertama kita memerlukan:
[SerializeField]
Melalui SerializeField, prefab muncul secara langsung di spawner.
musuh peribadi [] musuh;
Anda juga memerlukan pembolehubah:
[SerializeField]
float peribadi spawnTimeDelay, startSpawnDelay;
Dengan ini kita menetapkan masa bertelur dan selang antara pemijahan.
Kami juga memerlukan:
bool awam selesai;
Ia menetapkan lawan terakhir untuk spawner. Pengurus Permainan mempunyai "pengawasan" pemijah. Bahagian yang telah siap menyatakan bahawa tahap telah selesai apabila tiada lagi musuh di tempat kejadian dan pemijah semua musuh dihantar ke tahap.
Sekarang diperlukan coroutine untuk musuh bertelur.
Lawan juga harus bergerak ke arah tertentu.
Akhirnya, perlu diperiksa sama ada pemijahan telah selesai.
IEnumorator diperlukan untuk coroutine. Perpaduan mengendalikan coroutine dalam Latar Belakang. Ia juga berlaku dalam setiap bingkai:
persendirian IEnumerator ()
Sekarang sistem diberitahu untuk menunggu beberapa saat untuk lawan muncul:
hasil pulangan WaitForSeconds baru ();
Kami sedang menunggu startSpawnDeley:
hasil pulangan WaitForSeconds baru (startSpawnDelay);
Untuk maklumat masa yang kami perlukan:
untuk (int i = 0; i <panjang; i ++)
Setiap lawan harus menghantar semula nombor tertentu setelah masa tertentu.
Itulah sebabnya ada juga: musuh. Panjang:
untuk (int i = 0; i <musuh. Panjang; i ++)
Sekarang rujukan kepada lawan harus dibuat:
Musuh musuhInstance = Instantiate (musuh [i], transform.position);
Transform.position memberitahu sistem bahawa lawan harus muncul di spawner.
Quaternion.identity merujuk kepada putaran.
Musuh musuhInstance = Instantiate (musuh [i], transform.position, Quaternion.identity);
Pergerakan lawan dapat ditentukan dengan lebih terperinci:
musuhInstance.Move (transform.right);
Kami menambah pulangan hasil WaitforSeconds baru (SpawnTimeDelay); sekali lagi, kali ini dengan SpawnTimeDelay.
Ini bererti bahawa setiap kali musuh muncul, Perpaduan menunggu waktu istimewa itu sehingga masa berikutnya.
Akhirnya, sistem perlu memastikan bahawa pemijahan selesai:
selesai = i> = musuh. Panjang - 1;
Akhirnya, Coroutnie mesti dimulakan:
batal mula ()
{
StartCoroutine (Spawn ());
}
Skrip terakhir untuk pemijahan akan kelihatan seperti ini:

Dalam skrip spawn yang dilampirkan kini anda dapat mengatur frekuensi spawn:

Anda kini boleh menyeret dan menjatuhkan lawan ke skrip Spawner:

