Saya sedang dalam proses membuat permainan bergaya penyerbu luar angkasa, dan ingin membuat musuh harus dipukul tiga kali sebelum meledak.
Tutorial yang saya gunakan hanya menunjukkan cara membuat musuh meledak hanya dengan satu pukulan. Ini menggunakan fungsi yang disebut didBegin(_ contact: SKPhysicsContact)
https://www.youtube.com/watch?v=F0kcw6eryJs&t=617s
Sekarang, fungsi ini, dari pemahaman saya, mengevaluasi setiap kejadian kontak, menetapkan dua peran berbeda pada dua benda, dan kemudian memutuskan apa yang harus dilakukan dengan masing-masing benda. Saya berasumsi jika musuh menerima tiga serangan, variabel yang berisi sisa kesehatan mereka akan digunakan. Kemudian, dengan setiap kejadian kontak, variabelnya akan berkurang satu, hingga jika nilainya nol, musuhnya tersingkir.
Namun, ada masalah besar dalam hal ini. KarenadidBegin(_ contact: SKPhysicsContact)
hanya mengevaluasi satu contoh kontak, ia tidak memiliki pengetahuan tentang contoh kontak sebelumnya. Intinya, ketika musuh terkena serangan, tidak ada cara untuk mengetahui apakah musuh tersebut pernah terkena serangan sebelumnya, belum terkena serangan sama sekali, atau sudah terlalu sering terkena serangan. Jika hanya ada satu musuh, maka saya dapat menggunakan satu variabel untuk memantau kesehatannya. Namun hal ini tidak terjadi, karena ada banyak musuh di layar sekaligus, dan setiap kali terjadi kontak, tidak ada cara untuk mengetahui apakah serangan sebelumnya mengenai musuh ini, atau musuh lainnya.
Jika ada satu musuh di layar, itu sederhana karena setiap kali terjadi kontak, pasti ada satu musuh tersebut. Namun jika ada beberapa entitas di layar, maka tidak ada cara untuk mengetahui musuh mana yang diterapkan oleh suatu kontak.
Saya percaya ini akan memerlukan semacam identifikasi untuk setiap contoh musuh, meskipun saya tidak yakin bagaimana melakukan hal ini. Bagi kalian yang membaca, saya ucapkan banyak terima kasih sudah mampir, dan saya sangat berterima kasih jika kalian bisa membantu.