จะตัดสินได้อย่างไรว่าตัวละครตกลงไปในช่องว่างของนักวิ่ง / จัมเปอร์ที่ไม่มีที่สิ้นสุด?


12

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


OT: ฉันคิดว่าคำถามนี้ถูกโพสต์ไว้บน rpg.SE และฉันคิดว่า "การค้นพบการใช้ประโยชน์จากกฎแบบใดในตอนนี้?
o0 '

คำตอบ:


20

เพิ่มพื้นที่สี่เหลี่ยมที่ด้านล่างของระดับต่ำกว่าความสูงต่ำสุดที่อนุญาตของแพลตฟอร์ม หากผู้เล่นได้ตัดกันภูมิภาคนี้พวกเขาหลุดออกจากแท่น


1
และทำให้สี่เหลี่ยมผืนผ้านี้เป็นลูกของกล้องดังนั้นมันจึงเคลื่อนที่ด้วยกล้องและมีอยู่เสมอ มันง่ายมาก ขอบคุณ
SanSolo

แม้ว่าผู้เล่นจะไม่สามารถผ่านด่านได้ แต่ฉันคิดว่านี่เป็นวิธีที่ดีในการป้องกันหากเขาจัดการได้
mucaho

5
หากคุณกำลังตรวจสอบจุดตัดอย่างแท้จริงตรวจสอบให้แน่ใจว่าตัวละครของคุณไม่สามารถตกลงมาได้อย่างรวดเร็วเหมือนกับการคลิปผ่านพื้นผิว (เช่นจากด้านบนของตัวละครทั้งหมดและเฟรมถัดไปด้านล่างทั้งหมด)
wchargin

2
ใช่ rect ควรขยายออกไปเท่าที่จำเป็นเพื่อหลีกเลี่ยงสิ่งนี้ นอกจากนี้เพียงแค่ตรวจสอบความสูงจะได้ผล แต่สิ่งนี้จะช่วยให้คุณมีความยืดหยุ่นในการปรับขนาด "พื้นที่การฆ่า" ขึ้นอยู่กับระดับ
mklingen

6
เพื่อหลีกเลี่ยง "การตัด" ผ่านสี่เหลี่ยมทำไมไม่ง่ายif (playerPos.x < minHeight)?
โคลจอห์นสัน

24

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

หากเกมของคุณเลื่อนในแนวตั้งเช่นกัน (อาจขึ้นไปด้านบน) คุณสามารถตรวจสอบว่าผู้เล่นตกลงด้านล่างของมุมมองด้านล่างหรือไม่ (เช่นบริเวณเวทีที่อยู่บนหน้าจอหรือโฟกัสของกล้อง)

โดยทั่วไปสภาพความตายคือถ้าตัวละครไม่สามารถอยู่ในกล้องได้ ด้วยการควบคุมการเคลื่อนไหวของกล้องคุณจะสามารถปรับแต่งการเล่นเกมของคุณ ตัวอย่างเช่นหากอยู่ในระยะเลื่อนแนวตั้งคุณอนุญาตให้กล้องของคุณ "ยาง" เล็กน้อยลงในขณะที่ให้การเคลื่อนไหวขึ้นเต็มคุณจะลงโทษลึกลงนอกจอ


ใช่นั่นเป็นวิธีที่ง่ายเช่นกัน ฉันแค่ต้องการค้นหาตำแหน่งต่ำสุดที่ตัวละครสามารถทำได้
SanSolo

1
แก้ไข! ในกรณีของ scroller แนวนอนคุณสามารถตรวจสอบขนาดแนวตั้งของเวทีในโปรแกรมแก้ไขแผนที่ของคุณ ในกรณีของ scroller แนวตั้งคุณสามารถตรวจสอบให้แน่ใจว่ากล้องเคลื่อนขึ้นด้านบนเท่านั้น ด้วยวิธีนี้ถ้าตัวละครล้มลงเขาจะจบลงใต้มุมมองของกล้อง จากนั้นคุณสามารถตรวจสอบได้ว่าตำแหน่งแนวตั้งของตัวละครนั้นต่ำกว่าขอบเขตด้านล่างของมุมมองหรือไม่
Jelle van Campen

@JelvanCampen: คุณไม่จำเป็นต้อง จำกัด กล้องให้ขยับขึ้นไปข้างบนเสมอไป คุณสามารถฆ่าตัวละครที่ไม่สามารถอยู่ในกล้องหรือติดตามกล้องได้
Mooing Duck

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

2
@ เควิน: ฉันเห็นด้วยกับเกมทั่วไป แต่ไม่ใช่สำหรับตัวเลื่อนที่ไม่สิ้นสุด ตัวอย่างเช่นในตัวเลื่อนแนวตั้งคุณจะต้องทำการวางไข่ในกล่องใหม่และทำการปิดกล่องหน้าจอใหม่หรือไม่ก็ต้องอัปเดตกล่องในขณะที่กล้องเคลื่อนที่ เนื่องจากสภาพความตายเชื่อมโยงโดยตรงกับ "ความล้มเหลวในการอยู่ในกล้อง" จึงเหมาะสมที่จะผูกเงื่อนไขกับกล้อง นอกจากนี้ยังมีประสิทธิภาพในการตรวจสอบขอบเขตกล้องมากกว่าวางไข่วัตถุใหม่และหันไปใช้การตรวจสอบการชนกัน
Jelle van Campen

2

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

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


1

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

ตัวอย่าง: เรามี 3 เสามีความสูง [10, 20, 40] ผู้เล่นกระโดดขึ้นไปบนเสาที่มีความสูง 40 เขากระโดดไปข้างหน้าถึง 20 เขารู้สึกว่ามีช่องว่างระหว่าง 40 และ 20 ตอนนี้เขาอยู่ที่ความสูง 15 นั่นหมายความว่าเขารู้สึก สำหรับการตรวจสอบที่เข้มงวดน้อยกว่าให้รอจนกว่าเขาจะต่ำกว่า 10


เสาทั้งหมดมีขนาดเท่ากัน มันเป็นช่องว่างในแนวนอนระหว่างสองเสาหลักที่แตกต่างกัน :)
SanSolo

0

ให้นับระยะเวลาที่ตัวละครตกลงมา (เช่นระยะเวลาที่พวกเขาเคลื่อน "ลง") เมื่อพวกเขาลดลงเกินกว่าเวลาที่กำหนดไว้พวกเขาโดยนิยามได้ตกลงมาจากเวทีใช่มั้ย

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