เกม 2 มิติเช่น Zelda จัดการกับตัวละครที่อยู่ด้านหลังอาคารซึ่งมีเพียงส่วนเดียวของเขาที่แสดงได้อย่างไร


28

ฉันพยายามพัฒนาเกมสไตล์ Zelda ง่าย ๆ ฉันพบหัวข้อที่มีประโยชน์มากนี้

LoZ: ลิงก์ไปยังการชนกันของไทล์ย่อยจัดการอย่างไร

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


ฉันชอบคิดว่าสไตล์การเรนเดอร์มีพื้นดิน (หญ้าพื้นกระเบื้อง ฯลฯ ) เลเยอร์วัตถุ (กระถางศัตรูชนวนการเชื่อมโยง ฯลฯ ) และชั้นท้องฟ้า (ท็อปส์ซูหลังคายกกระถางท็อปส์ทรี ฯลฯ ) ตรรกะสำหรับการเคลื่อนย้ายสิ่งต่าง ๆ ระหว่างเลเยอร์อาจเป็นเรื่องแปลกในตัวอย่างของพ็อต แต่เป็นเรื่องอื่น
Benjamin Danger Johnson

คำตอบ:


32

เกมแบบเรียงต่อกันของ 2D มักจะมีเลเยอร์มากขึ้นซึ่งแสดงในเลเยอร์ต่างกัน - บางอันจะแสดงเป็นฉากหลังที่อยู่เหนือผู้เล่น

ส่วนหนึ่งของหลังคานั้นแสดงเหนือผู้เล่นและนั่นเป็นสาเหตุที่ผู้เล่นสามารถไปด้านหลังอาคารได้

นี่คือตัวอย่างภาพจากเกมของฉันที่จะอธิบายได้ดีกว่า: enter image description here


ดังนั้นตัวอาคารเองจึงสามารถเป็นส่วนหนึ่งของพื้นหลังได้ แต่หลังคาเป็นส่วนหนึ่งของชั้นที่แตกต่างกันซึ่งอยู่ด้านบนของชั้นด้วยสไปรต์
Tinadm

2
@Tadadm มันไม่จำเป็นต้องเป็นหลังคาทั้งหมด แต่มันอาจเป็นส่วนของหลังคาที่จะวาดบนสุดของโปรแกรมเล่นที่แสดงหลังจากทุกอย่าง
Tetrad

7
+1 สำหรับกราฟิกที่ยอดเยี่ยม ช่วยผู้เรียนรู้ทางสายตาจริงๆ
UnderscoreZero

1
ฉันค่อนข้างมั่นใจว่า SNES JRPG เก่า ๆ นั้นใช้เทคนิคเดียวกัน FF2, FF5 เป็นต้นเทคนิคยังคงใช้ได้
Hatoru Hansou

1
คุณสามารถดูสิ่งนี้ได้ดีกับตัวเลียนแบบเช่น ZSNES ซึ่งช่วยให้คุณสามารถสลับปิดและเปิดแต่ละเลเยอร์ได้ด้วยตนเอง
โทเบียส Kienzler

5

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

พิจารณามุมมองจากบนลงล่างของแผนที่ของคุณเช่น

  ABCDEFGHIJKL
1 +-----=----+
2 |  .    .  |
3 |    X   o |
4 | .        ||
5 |    .   . |
6 +--=-------+

ที่ไหนพูดXทำเครื่องหมายเสาสูง สำหรับแต่ละวัตถุที่คุณเก็บภาพของเปอร์สเปคทีฟที่เป็นไปได้ทั้งหมด (หรือใช้เหมือนกัน ... ) ซึ่งอาจมีการเรียงต่อกันสูง ตอนนี้เมื่อวาดเพียงแค่เริ่มต้นด้วยคอลัมน์หรือแถวที่อยู่ด้านหลังในมุมมองปัจจุบันเช่นแถว 1 ถ้ามองจากทางทิศใต้ หลังจากนั้นวาดแถว / คอลัมน์ที่สองมากที่สุดไปทางด้านหลังและอื่น ๆ ด้วยวิธีนี้เมื่อสิ่งที่สูงกว่าไทล์หนึ่ง (ขยายไปถึงมุมมองปัจจุบัน) ก็จะถอนสิ่งที่อยู่ข้างหลัง

(ขออภัยที่ไม่มีรูปภาพที่สวยงามฉันไม่เก่งในกราฟิกที่ใช้ ... )


สังเกตว่าคุณสามารถเปลี่ยนระดับความสูงของกล้องได้อย่างง่ายดายด้วยการยืดพื้นผิวของวัตถุอย่างไร
Tobias Kienzler

1

คุณควรมีตัวแปรสำหรับความลึกและให้ภาพที่มีความลึกที่ใหญ่ที่สุดเป็นอันดับแรกจากนั้นภาพอื่น ๆ ที่มีความลึกต่ำสุด และความลึกของแต่ละวัตถุควรเท่ากับลบของพิกัด y ของมัน

Depth=-y

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