คำถามติดแท็ก aabb

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

4
โมเมนตัมและลำดับของปัญหาการอัพเดทในเอนจิ้นฟิสิกส์ของฉัน
คำถามนี้คือ "ติดตาม" คำถามจากก่อนหน้านี้หนึ่งของฉันเกี่ยวกับการตรวจสอบการชนและความละเอียดที่คุณสามารถหาได้ที่นี่ หากคุณไม่ต้องการอ่านคำถามก่อนหน้านี่เป็นคำอธิบายสั้น ๆ เกี่ยวกับการทำงานของเครื่องมือฟิสิกส์ของฉัน: ทุกหน่วยงานทางกายภาพจะถูกเก็บไว้ในคลาสที่เรียกว่า SSSPBody รองรับเฉพาะ AABB SSSPBody ทุกคนถูกเก็บไว้ในคลาสที่เรียกว่า SSSPWorld ซึ่งจะอัปเดตทุกตัวและจัดการกับแรงโน้มถ่วง ทุกเฟรม SSSPWorld อัปเดตทุกส่วนของร่างกาย ร่างกายที่ได้รับการปรับปรุงทุกตัวจะมองหาวัตถุที่อยู่ใกล้เคียงในพื้นที่ว่างเปล่าตรวจสอบว่าพวกเขาต้องการตรวจจับการชนหรือไม่ ถ้าใช่พวกเขาเรียกใช้เหตุการณ์ "การชนกัน" และตรวจสอบว่าพวกเขาต้องการแก้ไขการชนกันหรือไม่ ถ้าใช่พวกเขาจะคำนวณเวกเตอร์การเจาะและการเหลื่อมกันของทิศทางจากนั้นเปลี่ยนตำแหน่งเพื่อแก้ไขการแทรกซึม เมื่อร่างกายชนกับวัตถุอื่นมันจะส่งผ่านความเร็วไปยังอีกความเร็วหนึ่งโดยการตั้งค่าความเร็วของร่างกายเป็นของมันเอง ร่างกายคือความเร็วถูกตั้งค่าเป็น 0 เมื่อมันไม่ได้เปลี่ยนตำแหน่งจากเฟรมสุดท้าย หากมันชนกับตัวถังที่เคลื่อนไหว (เช่นลิฟต์หรือแพลตฟอร์มที่กำลังเคลื่อนที่) มันจะคำนวณความแตกต่างของการเคลื่อนไหวของลิฟต์เพื่อดูว่าร่างกายไม่ได้เคลื่อนที่จากตำแหน่งสุดท้ายหรือไม่ นอกจากนี้เนื้อความจะเรียกเหตุการณ์ "ทับซ้อน" เมื่อมุม AABB ทั้งหมดซ้อนทับบางสิ่งบางอย่างในกรอบ นี้คือรหัสที่มาแบบเต็มของเกมของฉัน มันแบ่งออกเป็นสามโครงการ SFMLStart เป็นอินพุตการจัดการไลบรารีภาพวาดและการอัพเดตเอนทิตีที่ง่าย SFMLStartPhysics เป็นสิ่งที่สำคัญที่สุดโดยที่คลาส SSSPBody และ SSSPWorld นั้น PlatformerPhysicsTest เป็นโครงการเกมที่มีตรรกะของเกมทั้งหมด และนี่คือวิธี "อัปเดต" ในคลาส SSSPBody …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.