คุณจะจัดการกับไพ่ที่ไม่สม่ำเสมอในขณะที่เรนเดอร์แผนที่อย่างไร


13

ป้อนคำอธิบายรูปภาพที่นี่

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

ป้อนคำอธิบายรูปภาพที่นี่

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

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

รหัสของฉันในกรณีที่คุณต้องการดูว่าฉันจัดการกับมันอย่างไร: Map.java (pastebin) (แก้ไข: ฉันไม่จัดการมันหมายความว่าฉันกำลังทำแผนที่อยู่ในขณะนี้)

tl; dr - ฉันจะใช้แผนที่ดูแผนที่แบบกระเบื้อง 2d ของฉันและเปลี่ยนเป็นรูปแบบขนาดอื่นได้อย่างไร หรือมีวิธีที่ดีกว่าในการทำสิ่งที่ฉันพยายามจะทำอย่างไร มีชื่อของวิธีการที่ฉันควรมองหาในขณะที่ googling หรือไม่?

คำตอบ:


19

มีสองวิธีมาตรฐานในการทำเช่นนี้

  • แยกขนาดไทล์ที่ไม่ได้มาตรฐานของคุณออกเป็นขนาดไทล์มาตรฐาน ดังนั้นแถบกำแพงเหล่านั้นจึงกลายเป็น "สแต็ค" ของกระเบื้องสี่เหลี่ยมที่คุณเพิ่งรู้ที่จะรวมเข้าด้วยกันในเครื่องมือแก้ไขระดับ เกมเช่นเกม Final Fantasy ยุคต้น ๆ ได้ทำงานในลักษณะนี้
  • ปล่อยให้ชิ้นส่วนกระเบื้องใด ๆ สูงกว่าความสูงกระเบื้องมาตรฐานของคุณ จัดแนวกระเบื้องให้ตรงกับด้านล่างของสี่เหลี่ยมผืนผ้าเลเยอร์ของคุณเพื่อให้สามารถวาดใด ๆ ได้สูงกว่าความสูงปกติของกระเบื้อง เมื่อวาดแผนที่ของคุณคุณจะวาดแผ่นเริ่มต้นจากด้านหลัง (ช่องสี่เหลี่ยมที่สูงขึ้นบนหน้าจอ) และลงท้ายด้วยแผ่นด้านล่าง (อันที่ด้านล่างของหน้าจอ) สิ่งนี้ทำให้มั่นใจได้ว่ากระเบื้องสูงในเบื้องหน้าซ้อนทับอย่างเหมาะสมบนกระเบื้องในพื้นหลัง โปรดทราบว่าในวิธีการนี้ไทล์ของคุณยังคง จำกัด ความกว้างไทล์เดียว

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


2
+1 สำหรับแนวทางที่สอง โดยทั่วไปจะย้ายคุณจากแผนที่ย่อยไปยังวัตถุบนแผนที่
Kromster

สมบูรณ์แบบขอบคุณมากฉันคิดว่ามันอาจเป็นสิ่งที่คล้ายกับตัวเลือกที่สอง แต่ฉันต้องการตรวจสอบให้แน่ใจว่าฉันได้ทำในลักษณะที่เป็นมาตรฐาน = D
Latency

2

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

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