Halo Dalam artikel ini saya ingin berbagi cara mewujudkan penghancuran musuh dengan lompatan, seperti dalam Mario. Saya masih belajar sendiri, jadi jika saya memiliki tips atau petunjuk yang berguna, silakan tulis komentar. Nah, setelah melihat banyak tutorial, dan membaca artikel, hanya dua yang menarik yang ditemukan, dan mungkin cara termudah untuk mengimplementasikan opsi:
- yang pertama adalah kontak dari poin collider,
- yang kedua adalah kontak dari colliders, ketika dua colliders digantung pada satu objek, satu mengambil kehidupan pemain, dan yang kedua menghancurkan objek yang dilampirkan.
Untuk memulainya, kita akan menulis sebuah fungsi yang akan mengambil kehidupan pemain, dan diperlukan untuk kedua opsi:
public int health = 3; void Hurt() { health--; if (health <= 0) SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); }
1 opsi
Kami akan menganalisis opsi pertama jika titik kontak lebih besar dari atau sama dengan ketinggian 0,6, pemain melompat dari atas musuh dihancurkan, jika pemain mengalami kerusakan.
void OnCollisionEnter2D(Collision2D collision) { Enemy enemy = collision.collider.GetComponent<Enemy>(); if (enemy != null) { foreach (ContactPoint2D point in collision.contacts) { if (point.normal.y >= 0.6f) { enemy.EnemyHurt(); } else { Hurt(); } } }
(Sepotong kode yang digantung pada pemain)
public void EnemyHurt() { Destroy(this.gameObject); }
(Potongan kode yang tergantung pada musuh)
2 opsi
Tambahkan collider, buat sedikit lebih tinggi dari collider utama, beri tanda centang "is Trigger" pada objek, gantung skrip, dan tambahkan fragmen kode ini.
private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.name == "Player") Destroy(this.gameObject); }
(Potongan kode yang tergantung pada musuh)
Ketika collider menyentuh objek yang disebut "Player", objek dihancurkan (sebagai tanda kontak, Anda dapat menggunakan tag).
Lebih jauh di objek yang sama kita membuat satu lagi GameObject dan menyebutnya DeathZone. Tambahkan collider ke dalamnya, buat sedikit lebih besar, dan centang kotak βis Triggerβ.

private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.name == "DeathZone") { Hurt(); } }
(Sepotong kode yang digantung pada pemain)
Seperti yang Anda lihat, tidak seperti opsi pertama, pada opsi kedua, penggunaan colliders sedikit lebih besar, dan tidak perlu menggunakan pemicu.

(Opsi kedua)
Anda juga dapat menambahkan bahwa pemain melompat setelah penghancuran musuh. Yah, sepertinya semuanya, terima kasih atas perhatian Anda!