ทำให้ผู้เล่นวิ่งไปบนบันไดอย่างราบรื่น


11

ฉันมีเกมแพลตฟอร์ม 2 มิติที่ผู้เล่นวิ่งไปทางขวาเสมอ แต่ภูมิประเทศไม่ได้เป็นแนวนอนเสมอ ตัวอย่าง:

ตัวอย่าง

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

ฉันคิดถึงการสร้างเส้นแบ่งระหว่างขอบของบันไดและทำให้ผู้เล่นเคลื่อนไหวบนเส้นนั้น ... คุณคิดอย่างไร? มีอะไรที่ฉลาดกว่านี้บ้างไหม?

ชอบที่นี่

คำตอบ:


11

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

ถึงแม้ว่านั่นอาจจะทำให้เกิดการตัดกับโมเดลผู้เล่นและบันได

อีกแนวคิดหนึ่งคือการวางหนึ่ง boundingboxes จากหัวของตัวละครเพื่อ kness ที่มีความกว้างสูงกว่ากล่องของตัวละคร

เมื่อผู้เล่นชนกับสิ่งที่กล่อง 'A' ไม่ได้คุณสามารถย้ายผู้เล่นไปด้านบนของสิ่งที่มันชนเข้ากับ

_________________
|    |     |    |
|    |     |    |
|  A | pla | A  |
|____| yer |____|
     |     | _________________________ <- step 
     |     | |      
--------------------------------------------- <- ground

12

มีวิธีการทั่วไปสามวิธีในการจัดการกับบันไดในวิดีโอเกม:

วิธีการ "มาริโอ" คือคุณจะต้องกระโดดขึ้นบันได

วิธีการ "คาสเซิลวาเนีย" คือการเคลื่อนที่ขึ้น / ลงบันไดเป็นการเคลื่อนที่แบบต่าง ๆ คุณต้องกด 'up' บนตัวควบคุมและมีการเล่นภาพเคลื่อนไหวพิเศษ "การปีนบันได" เพื่อเดินข้ามบันได ความแตกต่างของสิ่งนี้คือวิธี "Resident Evil" ซึ่งการเคลื่อนที่ขึ้น / ลงบันไดนั้นถือว่าเป็นเหมือนฉากตัดที่เล่นเมื่อผู้เล่นกดปุ่มปฏิสัมพันธ์; ไม่อนุญาตให้ปีนบันไดแบบอินเตอร์แอคทีฟใด ๆ

วิธีการ "เกือบทุกคน" เป็นวิธีการที่คุณพูดถึง: รักษาบันไดราวกับว่าพวกเขาเป็นทางลาด ขึ้นอยู่กับประเภทของเกมคุณอาจต้องการวางทางลาดที่ระดับความสูงต่างกันเมื่อเทียบกับบันได โดยทั่วไปแล้วในเกม 2D กลอุบาย "บันไดนั้นเป็นทางลาดจริง ๆ " จะเห็นได้ชัดน้อยหากผู้เล่นอยู่ในระดับลาดมุมด้านล่างของแต่ละขั้นบันไดในขณะที่อยู่ในเกม 3D โดยทั่วไปแล้วจะสังเกตได้น้อยกว่าถ้าลาดเป็นระดับ ด้วยมุมด้านบนของแต่ละขั้นตอน (เช่นในเกม 2D จะสังเกตเห็นได้ง่ายขึ้นถ้าเท้าของตัวละครลอยอยู่เหนือพื้นดินและคุณต้องการย่อให้เล็กสุดในขณะที่ในเกม 3D จะสังเกตเห็นได้ง่ายขึ้นถ้าเท้าของตัวละครถูกตัดผ่านพื้นดินและคุณ ต้องการลดขนาดนั้น)


คำพูดที่ยอดเยี่ยมเกี่ยวกับการลอย / ตัดบนจุดยืนกราฟิกที่แตกต่างกัน
Kroltan

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

4

วิธีการส่วนใหญ่ที่ฉันพบมีการระบุไว้ข้างต้น - แต่ยังมีอีกหนึ่งวิธีที่ไม่ได้กล่าวถึง เมื่อผู้เล่นเจอสิ่งกีดขวางในแนวตั้งที่สั้นพอ (กล่าวคือ 1/3 ของพวกเขา) เพียงแค่วางพวกเขาไว้ด้านบน ตัวอย่างเช่น Minecraft และเอ็นจิ้น Source ใช้แนวทางนี้ในสถานการณ์แบบนั้น นอกจากนี้วิธีการนี้ยังช่วยให้คุณยังคงใช้ AABB ที่บริสุทธิ์สำหรับฟิสิกส์ทั้งหมดโดยไม่ให้ผู้เล่นผ่านความเจ็บปวดที่ต้องกระโดดขึ้นบันไดอย่างต่อเนื่อง


จะดีถ้าคุณสามารถอธิบายวิธีการตรวจสอบอุปสรรคดังกล่าว
ธารา

0

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

มันคล้ายกับแนวคิดของแผนที่ความสูงที่มีรายละเอียดในบทความนี้: http://info.sonicretro.org/SPG:Solid_Tiles#Slopes_And_Curves

ฉันคิดว่านั่นคือสิ่งที่คุณกำลังมองหาและคุณสามารถเลือกเล่นแอนิเมชั่นที่แตกต่างกันไปตามการขึ้นลงบันได

นอกจากนี้ยังมีภาพรวมที่ดีเกี่ยวกับแนวคิดความลาดชันที่แตกต่างกันในบทความนี้: http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/

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