หลังจากใช้เวลาในวันนี้เพื่อจดบันทึกบางอย่างเกี่ยวกับการติดตั้งกำแพงในเกมที่ใช้กระเบื้องของฉันฉันก็รู้ทันทีว่ามันจะไม่ง่ายอย่างที่ฉันคิดไว้ก่อน ในขณะที่งานปัจจุบันของฉันไม่ได้ใกล้เคียงกับการสร้างรหัสที่เกี่ยวข้องกับกำแพงจริง ๆ ฉันได้มาด้วยวิธีที่แตกต่างกันสามวิธี ตอนนี้ฉันไม่แน่ใจว่าหนึ่งในความคิดของฉันจะทำงานได้ดีที่สุดและไม่ว่าฉันจะพลาดบางสิ่งบางอย่างหรือไม่
สำคัญ: ตัวละครสามารถยืนบนแผ่นกระเบื้องที่มีกำแพงได้โดยไม่คำนึงถึงรูปร่างของพวกเขา
สิ่งที่พบได้ทั่วไปสำหรับทั้งสามรูปแบบ: tilemap จะ "เก็บไว้" ในคอนเทนเนอร์แบบมิติเดียว std :: vector (หรือคล้ายกัน) เหตุผลในการอธิบาย (ต่างไปจากเดิม) ในคำตอบของคำถามอื่น
คลาสคอนเทนเนอร์ในเกมแบบเรียงต่อกัน
กลับไปที่ผนัง
A) วิธีการง่ายๆ
ไม่มีอะไรแฟนซีที่นี่ แต่ละคอนเทนเนอร์แบบเรียงต่อกันสามารถเก็บอักขระไม่เพียง แต่วัตถุ Wall หนึ่งหรือหลายซึ่งแนบกับขอบภายในกระเบื้อง
จุดเด่น: ใช้งานง่ายไม่มีอะไรเปลี่ยนแปลงในเครื่องยนต์ จุดด้อย: สองสิ่ง หนึ่ง - อาจอยู่ในหัวของฉัน แต่ชุดค่าผสมบางอย่างอาจดูน่าเกลียด สอง - วิธีนี้ช่วยให้สามารถสร้างกำแพงสองชั้นจากแผ่นติดกันสองแผ่น สิ่งปลูกสร้างจะเป็นส่วนสำคัญของเกมและผนังสองชั้นช่วยให้ผู้สร้างสามารถยกระดับวัสดุของกำแพงผ่านวิธีการเล่นเกมและเพิ่มความทนทานที่เพิ่มขึ้นด้วยการเพิ่มกำแพงที่มีอยู่เป็นสองเท่า ไม่เป็นที่น่าพอใจ แน่นอนว่าฉันสามารถรวมขั้นตอนที่ห้ามกำแพงสองชั้น แต่จะมีความรู้สึกที่ไม่ดี
B) วิธีการอันชาญฉลาด (?)
แทนที่จะปล่อยให้ผู้เล่นตีสองครั้งทั่วทั้งแผนที่ฉันจะเอาชนะพวกมัน ผนังทุกหลังมีสองส่วนที่ติดกับขอบของกระเบื้องจากด้านใน ดังนั้นในการสร้าง "Wall Unit" เดียวฉันจะต้องสร้างวัตถุ Half-Wall สองชิ้นในแผ่นกระเบื้องสองอัน
จุดเด่น: มันสมมาตร !!! นอกจากนี้ไม่จำเป็นต้องเปลี่ยนข้อกำหนดเครื่องยนต์ปัจจุบันอย่างมีนัยสำคัญ จุดด้อย: ความยุ่งยากมากขึ้นวัตถุมากขึ้นและแน่นอน "หมวก" อย่างที่คุณเห็นในภาพมุมหนึ่งจะร้องไห้สำหรับวัตถุ "หมวก" จริงๆแล้วฉันเท่ห์ไปกับมันมันไม่ยากที่จะเพิ่ม เฮ้ฉันมีแผนสำหรับคอลัมน์บาง ๆ ที่ทำจากตัวเชื่อมต่อสี่ตัว หวาน. ถึงกระนั้นฉันมีความกังวลเกี่ยวกับปัญหามุมมองและแนวสายตาที่เป็นไปได้
C) ชุดยกเครื่องทั้งหมด
หรือฉันอาจสร้างเส้นขอบและมุมเป็นตู้คอนเทนเนอร์แยกต่างหากสำหรับวัตถุในเกม เป็นแบบนั้น.
จุดเด่น: ไม่แน่ใจด้วยซ้ำ มันตรงไปตรงมา อย่างแน่นอน. จุดด้อย: มันจะต้องมีการยกเครื่อง ไม่ใช่โค้ดขอบคุณ แต่เป็นเกมที่ช่างคิดในปัจจุบัน - แน่นอน ประโยชน์ไม่ชัดเจนนัก นอกจากนี้ aprroach นี้ต้องมากภาชนะมากกว่าสองคนก่อนหน้านี้ คณิตศาสตร์การจัดทำดัชนีก็จะเจ็บปวดเช่นกัน
ดังนั้นที่นี่เรามี - สามวิธีที่แตกต่างของการทำผนังระหว่างกระเบื้อง หากมีทางเลือกอื่น ๆ - ฉันยินดีที่จะตรวจสอบพวกเขาออก หากมีประโยชน์ใด ๆ / ความล้มเหลวของวิธีการใด ๆ ที่ฉันไม่เห็น - โปรดชี้ให้พวกเขาเห็น