ฉันกำลังตรวจสอบการชนกันของตัวละคร platformer ดังที่แสดงใน # 1 จุดสีแดงคือพิกเซลที่ถูกเลือกและเส้นสีเทาแสดงถึงแกนที่เกี่ยวข้อง ฉันชอบผลลัพธ์ที่ฉันได้รับจากการตรวจสอบการชนกันด้วยวิธีนี้ (เทียบกับพูดกล่อง จำกัด ) ทุกอย่างทำงานตรงตามที่ฉันต้องการยกเว้นหนึ่งปัญหา: การตรวจจับความสนใจ
ในภาพต่อไปนี้กล่องสีฟ้าอ่อนหมายถึงพื้นดินกล่องสีส้มเป็นวัตถุและลูกศรแสดงทิศทางการเคลื่อนไหว
วิธีง่ายๆในการตรวจจับเมื่อผู้เล่นถูกบดขยี้คือการดูว่าจุดปะทะที่อยู่ฝั่งตรงข้ามกำลังกระตุ้น หากพวกเขาเป็นผู้เล่นจะถูกบดขยี้ ใน # 2 คุณสามารถเห็นสถานการณ์ความสนใจปกติ ผู้เล่นถูกต่อสายดินและจุดชนบนสุดจะตัดกับวัตถุที่ตกลงมา สิ่งนี้ทำให้เกิดความสนใจ
# 3, 4 และ 5 นำเสนอสถานการณ์ที่เป็นปัญหา ใน # 3 ผู้เล่นกำลังเคลื่อนไปทางวัตถุซึ่งกำลังขยับขึ้น จุดปะทะด้านขวากำลังชนวัตถุทำให้เกิดการชนและหยุดเครื่องเล่น
ตอนนี้ถ้าวัตถุยังคงเลื่อนขึ้นและผู้เล่นยังคงเลื่อนไปทางขวา (ดังที่แสดงใน # 4) วัตถุจะล้างจุดปะทะด้านขวาของผู้เล่นและผู้เล่นจะเลื่อนไปทางขวา แต่ตอนนี้เมื่อทำเช่นนั้นแล้ววัตถุกำลังตัดกันจุดปะทะด้านบนทำให้เกิดรอยย่นในแนวตั้งที่ไม่ต้องการ
สถานการณ์ที่คล้ายกันจะแสดงใน # 5 วัตถุสองชิ้นนั้นอยู่ห่างกันมากพอที่จุดปะทะด้านล่างจะชัดเจนช่วยให้ผู้เล่นตกลงมา แต่ไม่ถึงขนาดยอมให้จุดปะทะด้านข้างนั้นชัดเจนทำให้เกิดแนวนอนที่ไม่ต้องการ
ฉันคิดวิธีแก้ปัญหา แต่ก็ไม่มีอะไรที่ฉันคิดขึ้นมาทำงานได้ดีเป็นพิเศษดังนั้นฉันจึงสงสัยว่ามีใครมีความคิดหรือความเข้าใจในวิธีการแก้ปัญหาเหล่านี้หรือไม่
เพื่อกำจัดความสับสนจุดปะทะสีแดงจะอยู่ในสไปรต์และมีการใช้เส้นสีเทาเพื่อแสดงถึงแกนที่เกี่ยวข้องสำหรับแต่ละจุดปะทะกัน ตัวอย่างเช่นถ้าผีสางของตัวละครเป็นสี่เหลี่ยมสีเขียวง่าย ๆ จุดการชนจะมีลักษณะดังนี้: