ฉันจะตรวจจับหิ้ง ledges ได้อย่างไร


18

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

ฉันจะตรวจสอบได้อย่างไรว่ามีหิ้งและถ้าตัวละครมีพื้นที่เพียงพอที่จะปีนขึ้นไป


คำถามนี้สร้างขึ้นเป็นรุ่นแคนนอนของคำถามสองข้อก่อนหน้านี้ ดูการอภิปราย meta ที่นี่
doppelgreener


1
นอกจากนี้การเชื่อมโยงคำถามที่พูดถึงใน meta: gamedev.stackexchange.com/questions/38066/ …และgamedev.stackexchange.com/questions/15491/…
MichaelHouse

คำตอบ:


22

วิดีโอสำหรับOvergrowth Alpha 132แสดงให้เห็นว่าพวกเขาใช้งานการปีนหน้าผาได้อย่างไร

วิธีการของพวกเขาควรทำงานกับเครื่องยนต์ใด ๆแม้แต่เครื่องยนต์ 2Dที่คุณใช้สี่เหลี่ยมและวงกลมแทนทรงกระบอกและทรงกลม

การตรวจจับหิ้งของพวกเขาเกี่ยวข้องกับสองส่วน:

การตรวจจับผนัง (ใช้ทรงกลม)

เกมจะตรวจสอบว่าผู้เล่นกำลังชนกับกำแพงหรือไม่ หากมีกำแพงอาจมีหินที่ผู้เล่นสามารถจับได้ ส่วนที่สองใช้เวลามากกว่าในการวิเคราะห์หิ้ง

การตรวจจับ Ledge (ใช้ทรงกระบอก)

หากผู้เล่นสัมผัสกับกำแพงกระบอกสูบจะถูกกวาดลงมาจากระยะไกลเหนือตำแหน่งของผู้เล่นจนกว่ามันจะสัมผัสกับหิ้ง สิ่งนี้กำหนดสามสิ่ง:

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

วิธีการอันน่าทึ่งและตัวอย่างที่ยอดเยี่ยม +1
Bugster

"ทรงกระบอกถูกกวาดลงมาจากระยะหนึ่งที่อยู่เหนือตำแหน่งผู้เล่น" ระยะทางใด? สิ่งนี้สำคัญมากเมื่อต้องรับมือกับสภาพแวดล้อมในร่ม (คุณต้องตัดเพดานโดยไม่ตั้งใจ)
ธารา

1
@Dudeson ในอดีตฉันใช้ raycast เพื่อหาพื้นผิวหิ้งในตอนแรกก่อนที่จะติดตามด้วยการตรวจสอบปริมาณเพื่อตรวจสอบว่ามีห้องที่ไม่มีสิ่งกีดขวางเพียงพอที่จะปีนขึ้นไป เนื่องจาก raycast เป็นทิศทางจึงไม่อ่านเพดานว่าเป็นผลบวกปลอม - แม้ว่ามันจะยังคงติดอยู่บนชั้นถัดไปหากต้นกำเนิดสูงเกินไป .. การวัดที่แน่นอนจะขึ้นอยู่กับรายละเอียดมากมายของแต่ละเกม - ขนาดตัวละครเอื้อมมือกวาดล้างในการออกแบบระดับความเร็วลดลง ฯลฯ
DMGregory

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