- สร้างบัฟเฟอร์ที่มีขนาดเดียวกับหน้าจอ (หรือพื้นผิวที่มีรูปร่างของคุณ) ในแต่ละตำแหน่งจะมีบูลีนว่ามีสไปรต์หรือไม่ จากนั้นตรวจสอบ "พิกเซล" ทั้งหมดของรูปร่างผู้ใช้ไม่ว่าที่ตำแหน่งของพวกเขาคือสไปรต์ (โดยการตรวจสอบค่าบูลีนนั้น) หรือคุณสามารถสร้างสไปรต์เพิ่มเติมได้ที่นั่นโดยจัดเก็บ ID แทนที่จะเป็นบูลีน แต่นี่เป็นกรณีของ 1 สไปรต์
- หากรูปร่างที่สร้างโดยผู้ใช้สามารถแสดงตามลำดับของเส้นคุณสามารถตรวจสอบว่าแต่ละบรรทัดดังกล่าวข้ามสไปรต์หรือไม่ เนื่องจากสไปรท์มีรูปร่างเป็นรูปสี่เหลี่ยมผืนผ้าและรูปร่างของผู้ใช้เป็นเส้นที่มองหา "การแยกสี่เส้นสี่เหลี่ยมผืนผ้า" ... (แยกแกนอัลกอริทึม si วิธีหนึ่งที่จะทำ)
วิธีการขึ้นอยู่กับโครงสร้างข้อมูลที่คุณเลือกไม่ว่าจะเป็นบิตแมปหรือเวกเตอร์
วิธีแรกสามารถจัดการกับรูปร่างที่ซับซ้อนตามอำเภอใจง่ายต่อการใช้งาน แต่ใช้หน่วยความจำมากขึ้น ที่จริงคุณสามารถลดค่าใช้จ่ายของหน่วยความจำโดยใช้การบีบอัดและเพิ่มความเร็วโดยใช้ strutures ข้อมูลแบบลำดับขั้น (octrees) ...
วิธีที่สองไม่ใช่เรื่องง่ายที่จะใช้ แต่ใช้พลังการประมวลผลมากขึ้น
ในแต่ละกรณีวัดว่ามันเป็นเรื่องสำคัญ ฉันจะพยายามทำสิ่งแรกเพราะมันง่ายกว่าที่จะใช้ โชคดี. :)