Dalam tabrakan apa pun, ada dua GameObjects yang terlibat bukan? Yang ingin saya ketahui adalah, Bagaimana saya memutuskan objek mana yang harus berisi objek saya OnCollision*
?
Sebagai contoh, misalkan saya memiliki objek Player dan objek Spike. Pikiran pertama saya adalah meletakkan skrip pada pemain yang berisi beberapa kode seperti ini:
OnCollisionEnter(Collision coll) {
if (coll.gameObject.compareTag("Spike")) {
Destroy(gameObject);
}
}
Tentu saja, fungsionalitas yang sama persis dapat dicapai dengan alih-alih memiliki skrip pada objek Spike yang berisi kode seperti ini:
OnCollisionEnter(Collision coll) {
if (coll.gameObject.compareTag("Player")) {
Destroy(coll.gameObject);
}
}
Sementara keduanya valid, lebih masuk akal bagi saya untuk memiliki skrip pada Player karena, dalam hal ini, ketika tabrakan terjadi, suatu tindakan sedang dilakukan pada Player .
Namun, yang membuat saya ragu ini adalah bahwa di masa depan Anda mungkin ingin menambahkan lebih banyak objek yang akan membunuh Player saat bertabrakan, seperti Musuh, Lava, Laser Beam, dll. Objek-objek ini kemungkinan akan memiliki tag yang berbeda. Maka skrip pada Player akan menjadi:
OnCollisionEnter(Collision coll) {
GameObject other = coll.gameObject;
if (other.compareTag("Spike") || other.compareTag("Lava") || other.compareTag("Enemy")) {
Destroy(gameObject);
}
}
Sedangkan, dalam kasus di mana skrip berada di Spike, yang harus Anda lakukan adalah menambahkan skrip yang sama ke semua objek lain yang dapat membunuh Player dan beri nama skrip seperti KillPlayerOnContact
.
Juga, jika Anda memiliki tabrakan antara Player dan Musuh, maka Anda mungkin ingin melakukan aksi pada keduanya . Jadi dalam hal itu, objek mana yang harus menangani tabrakan? Atau haruskah keduanya menangani tabrakan dan melakukan tindakan yang berbeda?
Saya belum pernah membuat game dengan ukuran yang masuk akal sebelumnya dan saya bertanya-tanya apakah kodenya bisa menjadi berantakan dan sulit untuk dipertahankan saat tumbuh jika Anda mendapatkan hal yang salah pada awalnya. Atau mungkin semua cara itu valid dan tidak masalah?
Wawasan apa pun sangat dihargai! Terima kasih atas waktu Anda :)
Tag.SPIKE
gantinya?