ฉันจะกำหนดพื้นที่การชนที่ซับซ้อนที่ด้านบนของแผนที่ย่อยได้อย่างไร


13

ตามที่หลายคนแนะนำฉันใช้โปรแกรมแก้ไขแผนที่แบบเรียงต่อกันเพื่อสร้างแผนที่สำหรับเกมของฉันและมันยอดเยี่ยมโดยเฉพาะอย่างยิ่งเนื่องจากกรอบงาน libgdx ยังมี API สำหรับแผนที่จากกระเบื้องด้วย

ฉันเข้าใจว่าฉันสามารถกำหนดไทล์ที่ชนกันได้หรือไม่อยู่ในตัวแก้ไขแผนที่เพื่อให้ฉันสามารถจัดการกับการชนกันในรหัสของฉันได้ แต่ตอนนี้ฉันอยู่ในสถานการณ์ที่ฉันต้องแบ่งกระเบื้องออกเป็นพื้นที่ที่สามารถชนกันได้และไม่ยุบตัว ด้วยตนเองฉันคิดว่าฉันสามารถกำหนดจุดและขอบเขตของสองพื้นที่และจัดการกับโปรแกรม แต่นั่นเป็นงานที่ต้องใช้เวลามาก

ดังนั้นฉันจึง googled มากและพบตัวแก้ไขฟิสิกส์นี้ ดูเหมือนว่าเป็นเครื่องมือที่ยอดเยี่ยมในการทำให้กระบวนการที่ฉันกล่าวไว้ข้างต้นเป็นอัตโนมัติ อย่างไรก็ตามระบบใช้งานได้กับอิมเมจที่คลายการบีบอัดแต่ละอันและฉันไม่แน่ใจว่ามันจะใช้ได้แม้ว่าฉันจะแกะอิมเมจสำหรับการทำงาน

ฉันสงสัยว่ามีวิธีใดที่ดีกว่าในการทำกระบวนการทั้งหมดนี้ในการกำหนดพื้นที่ปะทะกัน ข้อเสนอแนะใด ๆ จะได้รับการชื่นชมมาก

คำตอบ:


22

ตามปกติฉันจะโยนความคิดเล็ก ๆ น้อย ๆ ไปที่โต๊ะ มีหลายวิธีที่คุณสามารถแก้ไขปัญหานี้ได้ ฉันจะอธิบายสามสิ่งที่ฉันจำได้และมันก็ขึ้นอยู่กับคุณที่จะตัดสินใจว่า (ถ้ามี) วิธีการเหล่านี้ดีสำหรับโครงการของคุณ

แนวคิดที่ 1: รูปแบบการทำซ้ำในแผ่นกระเบื้องของคุณ

ระบบของคุณจำเป็นต้องมีความยืดหยุ่นเพียงพอที่จะรองรับพื้นที่ชนใด ๆ ที่เป็นไปได้หรือไม่หรือคุณสามารถแบ่งมันออกเป็นชุดย่อยของรูปทรงกระเบื้องที่คุณสามารถสร้างด้วยและถือว่าเป็นกรณีพิเศษหรือไม่? ต่อไปนี้เป็นแหล่งข้อมูลเพื่ออ่านความคิดนี้:

ความคิดที่ 2: ข้ามกระเบื้องแผนที่

ใช่เพิกเฉยต่อ tilemap อย่างสมบูรณ์และจัดเก็บการแสดงรูปหลายเหลี่ยมที่แตกต่างกันของพื้นที่การชนของคุณ จากนั้นซ้อนทับเรขาคณิตนี้ที่ด้านบนของแผนที่ที่เป็นไทล์ของคุณและจัดการกับการชน หากคุณไม่ต้องการฟิสิกส์ใด ๆ ให้ตรวจสอบแหล่งข้อมูลต่อไปนี้:

มิฉะนั้นฉันคิดว่าคุณอาจใช้เครื่องมือที่คุณเชื่อมโยง

แนวคิดที่ 3: การตรวจจับการชนของพิกเซลที่สมบูรณ์แบบ

ใช้การชนที่สมบูรณ์แบบของพิกเซลและใช้มาสก์แยกต่างหากหรือเพียงแค่ช่องอัลฟาในไทล์ของคุณเพื่อเข้ารหัสพื้นที่การชนของตัวแปร สำหรับแรงบันดาลใจตรวจสอบคำแนะนำต่อไปนี้:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.