จะตัดสินใจได้อย่างไรว่า GameObject ควรจัดการกับการชนกันอย่างไร
ไม่ว่าจะเกิดการชนกัน GameObjects สองรายการมีส่วนเกี่ยวข้องหรือไม่ สิ่งที่ฉันต้องการที่จะรู้คือผมจะตัดสินใจอย่างไรว่าวัตถุที่ควรมีของฉันOnCollision*? ตัวอย่างเช่นสมมติว่าฉันมีวัตถุผู้เล่นและวัตถุเข็ม ความคิดแรกของฉันคือการวางสคริปต์บนโปรแกรมเล่นที่มีรหัสดังนี้: OnCollisionEnter(Collision coll) { if (coll.gameObject.compareTag("Spike")) { Destroy(gameObject); } } แน่นอนว่าฟังก์ชั่นเดียวกันนี้สามารถทำได้โดยแทนที่จะมีสคริปต์บนออบเจ็กต์ Spike ที่มีรหัสดังนี้: OnCollisionEnter(Collision coll) { if (coll.gameObject.compareTag("Player")) { Destroy(coll.gameObject); } } ขณะที่ทั้งสองมีความถูกต้องมันจะทำให้รู้สึกมากขึ้นกับผมที่จะมีสคริปต์ในการเล่นเพราะในกรณีนี้เมื่อการปะทะกันเกิดขึ้นการดำเนินการจะถูกดำเนินการบนเครื่องเล่น อย่างไรก็ตามสิ่งที่ทำให้ฉันสงสัยว่านี่คือในอนาคตคุณอาจต้องการเพิ่มวัตถุอื่น ๆ ที่จะฆ่าผู้เล่นในการปะทะกันเช่นศัตรู, ลาวา, ลำแสงเลเซอร์ ฯลฯ วัตถุเหล่านี้อาจมีแท็กที่แตกต่างกัน ดังนั้นสคริปต์บน Player จะกลายเป็น: OnCollisionEnter(Collision coll) { GameObject other = coll.gameObject; if (other.compareTag("Spike") || other.compareTag("Lava") || …