การตรวจจับการชนเชือก 2D


13

ฉันต้องการสร้างเชือกที่สามารถชนกับวัตถุอย่างในวิดีโอ youtube ต่อไปนี้:

เชือกฟิสิกส์เกม 2 มิติ

ฉันคิดว่าคุณใช้การรวม verlet ซึ่งใช้จุดและเชื่อมต่อจุดเหล่านี้กับเส้น ฉันกำลังพยายามหาว่าคุณจะใช้การตรวจจับการชนประเภทใดกับเชือกเพื่อให้ได้ผลในวิดีโอ

ฉันคิดว่าคุณจะต้องทำซีดีให้แต่ละจุด ฉันต้องการใช้ box2D ดังนั้นฉันสงสัยว่าแต่ละจุดจะทำงานอย่างมีประสิทธิภาพหรือไม่ คำแนะนำใด ๆ ที่จะได้รับการชื่นชม.


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

คำตอบ:


6

เนื่องจากคุณใช้ Box2D คุณสามารถสร้างชุดของรูปสี่เหลี่ยมผืนผ้าและใช้ข้อต่อของ Box2Dเพื่อเข้าร่วม ที่นั่นคุณมีเชือกของคุณ

เพื่อหลีกเลี่ยงมุมที่โผล่ออกมาจากเชือกที่โค้งงอฉันสามารถจินตนาการได้สองทางเลือก:

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

คำเตือน: ฉันไม่เคยลองทำสิ่งนี้ด้วยตัวเอง แต่ฉันล้มเหลวในการดูว่าชุดของสี่เหลี่ยมที่รวมสามารถล้มเหลวได้อย่างไรเมื่อวิดีโอที่คุณโพสต์แสดงนั้นเหมือนกันโดยการปลอมตัว

แก้ไข: ฉันเพิ่งเห็น PaulZ และฉันก็ตระหนักในสิ่งเดียวกัน ไปอ่านความคิดเห็นของเขาในคำถามด้วย


2

รวดเร็ว Google โยนนี้ขึ้นที่นี่ ตัวอย่างคำอธิบายและรหัส (ใน Flash) โดยใช้ Box2D เพื่อสร้างเชือกอย่างง่าย เชือกชนกับตัวเองและบล็อกที่ด้านบนของฉาก


0

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

ฉันไม่รู้ Box2D แต่ฉันเดาว่ามีการใช้งานที่จำเป็น


0

เดิม Box2D มีการสาธิตสะพานเชือกที่ทำจากกล่องบาง ๆ เข้าร่วมกับข้อ จำกัด แบบจุดต่อจุด; นั่นจะเป็นจุดเริ่มต้นที่ดี (ฉันไม่รู้ว่ามันยังมาพร้อมกับตัวอย่างนี้หรือไม่ แต่มันจะตรงไปตรงมาเพื่อสร้างใหม่)

มันง่ายพอที่จะใช้เชือกเป็นอนุภาคที่มีข้อ จำกัด ของระยะทางโดยไม่ขึ้นอยู่กับการจำลองของร่างกายที่เข้มงวด (ดังที่คุณพูดถึงโดยใช้ Verlet Integration และการแก้ไขข้อ จำกัด เช่นเดียวกับที่อธิบายไว้ในบทความนี้: http://www.gamasutra.com/resource_guide/ 20030121 / jacobson_pfv.htm ) แต่ถ้าคุณต้องการให้ร่างกายที่แข็งแรงตอบสนองต่อเชือกของคุณ (เช่นในวิดีโอพร้อมกล่องห้อย) มันจะซับซ้อนมากขึ้น ฉันจะเริ่มต้นด้วยชุดเครื่องมือที่ครอบคลุมเช่น Box2D และทำงานย้อนกลับแทนที่จะลองและสร้างจากอนุภาค


0

ฉันจำเกม Allegro นี้: Cupidได้จาก SpeedHack 2002 มันมีการใช้งานสำหรับเชือกที่ชนกับฉาก ดู PhysParticles และ HeartTrails เรียนในแฟ้ม heart_tails.cpp ในของรหัสที่มา

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