ฉันกำลังอยู่ในขั้นตอนการสร้างเกมสไตล์ Space Invaders และอยากจะสร้างให้ศัตรูต้องถูกโจมตีสามครั้งก่อนจะระเบิด
บทช่วยสอนที่ฉันใช้แสดงเฉพาะวิธีทำให้ศัตรูระเบิดหลังจากโจมตีเพียงครั้งเดียว มันใช้ฟังก์ชันที่เรียกว่า didBegin(_ contact: SKPhysicsContact)
https://www.youtube.com/watch?v=F0kcw6eryJs&t=617s
จากความเข้าใจของฉัน ฟังก์ชันนี้ประเมินแต่ละกรณีของการติดต่อ กำหนดบทบาทที่แตกต่างกันสองส่วนให้กับสองส่วน จากนั้นจึงตัดสินใจว่าจะทำอย่างไรกับแต่ละส่วน ฉันถือว่าศัตรูได้รับการโจมตีสามครั้ง ตัวแปรที่มีพลังชีวิตที่เหลืออยู่จะถูกนำมาใช้ จากนั้น เมื่อมีการสัมผัสกันแต่ละครั้ง ตัวแปรจะลดลงทีละตัว จนกระทั่งถ้าเป็นศูนย์ ศัตรูจะถูกกำจัดออกไป
อย่างไรก็ตาม มีปัญหาลึกในเรื่องนี้ เนื่องจากdidBegin(_ contact: SKPhysicsContact)
ประเมินอินสแตนซ์ของการติดต่อเพียงรายการเดียว จึงไม่มีความรู้เกี่ยวกับอินสแตนซ์อื่นๆ ของการติดต่อก่อนหน้านี้ โดยพื้นฐานแล้ว เมื่อศัตรูถูกโจมตี ไม่มีทางรู้ได้เลยว่าศัตรูถูกโจมตีมาก่อน ไม่เคยถูกโจมตีเลย หรือถูกโจมตีหลายครั้งเกินไป หากมีศัตรูเพียงตัวเดียว ฉันสามารถใช้ตัวแปรตัวเดียวเพื่อติดตามสุขภาพของมัน แต่จะไม่เป็นเช่นนั้น เนื่องจากมีศัตรูหลายรายบนหน้าจอพร้อมกัน และทุกครั้งที่มีการติดต่อ จึงไม่มีทางรู้ได้ว่าการโจมตีครั้งก่อนเป็นศัตรูรายนี้หรือศัตรูรายอื่น
หากมีศัตรูหนึ่งตัวบนหน้าจอ มันง่ายเพราะทุกครั้งที่มีการติดต่อ ศัตรูนั้นจะต้องเป็นศัตรูตัวนั้น แต่ถ้ามีหลายเอนทิตีบนหน้าจอ ก็ไม่มีทางรู้ได้เลยว่าผู้ติดต่อรายใดที่นำไปใช้กับศัตรู
ฉันเชื่อว่าสิ่งนี้จะต้องมีการระบุตัวตนของศัตรูแต่ละราย แม้ว่าฉันจะไม่แน่ใจว่าจะทำอย่างไร สำหรับผู้ที่อ่าน ฉันขอขอบคุณมากที่แวะมา และฉันรู้สึกขอบคุณมากหากคุณสามารถช่วยได้