ฉันกำลังสร้างนักวิ่งที่ไม่มีที่สิ้นสุด 2D ในเกมตัวละครกระโดดจากเสาต้นหนึ่งไปยังเสาและเสาถูกสร้างขึ้นแบบสุ่ม ฉันทำงานนี้แล้ว แต่จะทราบได้อย่างไรว่าตัวละครล้มเหลวที่จะกระโดดขึ้นไปบนเสาและตกลงไปในช่องว่างระหว่างเสา? เสาเป็นรูปสี่เหลี่ยมผืนผ้าสามัญ
ฉันกำลังสร้างนักวิ่งที่ไม่มีที่สิ้นสุด 2D ในเกมตัวละครกระโดดจากเสาต้นหนึ่งไปยังเสาและเสาถูกสร้างขึ้นแบบสุ่ม ฉันทำงานนี้แล้ว แต่จะทราบได้อย่างไรว่าตัวละครล้มเหลวที่จะกระโดดขึ้นไปบนเสาและตกลงไปในช่องว่างระหว่างเสา? เสาเป็นรูปสี่เหลี่ยมผืนผ้าสามัญ
คำตอบ:
เพิ่มพื้นที่สี่เหลี่ยมที่ด้านล่างของระดับต่ำกว่าความสูงต่ำสุดที่อนุญาตของแพลตฟอร์ม หากผู้เล่นได้ตัดกันภูมิภาคนี้พวกเขาหลุดออกจากแท่น
if (playerPos.x < minHeight)
?
หากเกมของคุณเลื่อนตามแนวนอนเท่านั้นคุณสามารถตรวจสอบว่าตำแหน่งแนวตั้งของตัวละครนั้นต่ำกว่าขอบล่างของเวทีหรือไม่
หากเกมของคุณเลื่อนในแนวตั้งเช่นกัน (อาจขึ้นไปด้านบน) คุณสามารถตรวจสอบว่าผู้เล่นตกลงด้านล่างของมุมมองด้านล่างหรือไม่ (เช่นบริเวณเวทีที่อยู่บนหน้าจอหรือโฟกัสของกล้อง)
โดยทั่วไปสภาพความตายคือถ้าตัวละครไม่สามารถอยู่ในกล้องได้ ด้วยการควบคุมการเคลื่อนไหวของกล้องคุณจะสามารถปรับแต่งการเล่นเกมของคุณ ตัวอย่างเช่นหากอยู่ในระยะเลื่อนแนวตั้งคุณอนุญาตให้กล้องของคุณ "ยาง" เล็กน้อยลงในขณะที่ให้การเคลื่อนไหวขึ้นเต็มคุณจะลงโทษลึกลงนอกจอ
อีกวิธีหนึ่งในการตรวจสอบพิกัดแนวตั้งคุณสามารถตรวจสอบความเร็วแนวตั้งได้ ถ้าตัวละครที่จะล้มลงได้เร็วกว่าเกณฑ์บางสรุปพวกเขาจะตาย (แม้ว่าจะมีเป็นบางพอแพลตฟอร์มต่ำยังคงถึงผลกระทบจะเป็นอันตรายถึงชีวิต)
แน่นอนว่าจะใช้งานได้เฉพาะในกรณีที่เกมของคุณใช้ฟิสิกส์พื้นฐานการตกฟรีอย่างเหมาะสมเช่นความเร็วในการตกเพิ่มขึ้นจริงในระหว่างการตกเช่นเดียวกับในความเป็นจริง (จนถึงความเร็วของเทอร์มินัล)
หากคุณมีความสูงของเสาคุณสามารถหาที่ต่ำที่สุดและเปรียบเทียบกับตำแหน่งแนวตั้งของผู้เล่น ถ้าเขาอยู่ต่ำกว่าเสาต่ำสุดก็ไม่มีโอกาสที่เขาจะกลับมาได้ คุณสามารถ จำกัด การตรวจสอบนี้ได้เฉพาะเสาด้านหลังและด้านหน้าของผู้เล่น
ตัวอย่าง: เรามี 3 เสามีความสูง [10, 20, 40] ผู้เล่นกระโดดขึ้นไปบนเสาที่มีความสูง 40 เขากระโดดไปข้างหน้าถึง 20 เขารู้สึกว่ามีช่องว่างระหว่าง 40 และ 20 ตอนนี้เขาอยู่ที่ความสูง 15 นั่นหมายความว่าเขารู้สึก สำหรับการตรวจสอบที่เข้มงวดน้อยกว่าให้รอจนกว่าเขาจะต่ำกว่า 10
ให้นับระยะเวลาที่ตัวละครตกลงมา (เช่นระยะเวลาที่พวกเขาเคลื่อน "ลง") เมื่อพวกเขาลดลงเกินกว่าเวลาที่กำหนดไว้พวกเขาโดยนิยามได้ตกลงมาจากเวทีใช่มั้ย