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

เกี่ยวข้องกับการเคลื่อนที่ของวัตถุผ่านอวกาศและเวลา รวมถึงแนวคิดต่าง ๆ เช่นการเร่งความเร็ว (แรงขับและแรงโน้มถ่วง) มวลการตอบสนองการชนแรงเสียดทานและอื่น ๆ

7
ฉันจะดักจับวัตถุด้วยการเคลื่อนที่เป็นวงกลมได้อย่างไร
ฉันกำลังสร้างเกมอวกาศ 2 มิติและต้องทำให้ยานอวกาศดักจับดาวเคราะห์ ฉันมีรหัสการทำงานสำหรับการสกัดกั้นเส้นตรง แต่ไม่สามารถหาวิธีคำนวณตำแหน่งของดาวเคราะห์ในวงโคจรเป็นวงกลมได้ เกมไม่ถูกต้องทางวิทยาศาสตร์ดังนั้นฉันจึงไม่กังวลเกี่ยวกับความเฉื่อยแรงโน้มถ่วงวงโคจรรูปไข่ ฯลฯ ฉันรู้ตำแหน่งยานอวกาศและความเร็วรวมถึงดาวเคราะห์วงโคจร (Radius) และความเร็ว

2
การใช้“ การกระโดดสองครั้งอย่างถูกต้อง”
ฉันกำลังเล่นเกม 2D บน iPhone โดยใช้ Corona (เวอร์ชั่นทดลองดังนั้นฉันไม่สามารถใช้ฟอรัมของพวกเขาได้) เกมดังกล่าวเกี่ยวข้องกับตัวละครที่ตกลงมาบนท้องฟ้าและฉันพยายามที่จะใช้ "การกระโดดสองครั้ง" สำหรับตัวละครเพื่อให้เขาสามารถกระโดดขึ้นได้ในขณะที่ตกลงมา ฉันใช้ห้องสมุดฟิสิกส์ของ Corona เพื่อให้ตัวละครตกและวิธีที่ดีที่สุดในการกระโดดให้เขาคือการใช้วิธีการกระตุ้นตามแนวตั้ง object:applyLinearImpulse(0, -0.4, object.x, object.y) ปัญหาที่ฉันเผชิญคือเมื่อตัวละครเพิ่งเริ่มต้น (ความเร็วแนวตั้งต่ำ) เขากระโดดสูงมากและเมื่อเขาตกลงมาพักหนึ่ง (ความเร็วแนวตั้งสูง) การกระโดดนั้นเล็กน้อย ฉันเดาว่าทางออกที่ดีที่สุดคือใช้สมการบางอย่างกับความเร็วเป็นอินพุตเพื่อให้กระโดดเหมือนกันโดยไม่คำนึงถึงความเร็ว แต่ฉันไม่สามารถหาได้ว่าสมการนั้นจะเป็นอะไร โอเคนั่นคือความคิดทั้งหมดของฉัน คำถามสุดท้ายก็คือคุณใช้การกระโดดสองครั้งกับฟิสิกส์ได้อย่างไร มีสมการที่เหมาะสมสำหรับปัญหาของฉันหรือไม่ ฉันควรใช้แนวทางอื่นหรือไม่? มันเคยทำมาก่อนในเกมเช่น Smash Bros ดังนั้นจึงมีวิธีแก้ปัญหาที่ทำซ้ำได้ใช่ไหม?
23 2d  physics 

7
การคำนวณแรงโน้มถ่วงที่เหมาะสมที่สุด
ฉันมีสิ่งของหลายชิ้นที่มีขนาดและความเร็วต่างกันไปซึ่งกันและกัน ในการอัพเดททุกครั้งฉันต้องข้ามวัตถุทุกอย่างและรวมแรงเข้าด้วยกันเนื่องจากแรงโน้มถ่วงของวัตถุอื่น ๆ มันไม่ได้ปรับขนาดได้ดีมากเป็นหนึ่งในสองคอขวดใหญ่ที่ฉันพบในเกมของฉันและฉันไม่แน่ใจว่าต้องทำอย่างไรเพื่อปรับปรุงประสิทธิภาพ มันรู้สึกเหมือนฉันควรจะสามารถที่จะปรับปรุงประสิทธิภาพการทำงาน เมื่อถึงเวลาใดก็ตาม 99% ของวัตถุในระบบอาจมีอิทธิพลเพียงเล็กน้อยต่อวัตถุ แน่นอนว่าฉันไม่สามารถจัดเรียงวัตถุตามมวลและพิจารณาวัตถุที่ใหญ่ที่สุด 10 อันดับแรกหรือบางสิ่งบางอย่างเท่านั้นเนื่องจากแรงแตกต่างกันไปตามระยะทางมากกว่ามวล (สมการนี้อยู่ในแนวของforce = mass1 * mass2 / distance^2) ฉันคิดว่าการประมาณที่ดีคือการพิจารณาวัตถุที่ใหญ่ที่สุดและวัตถุที่อยู่ใกล้ที่สุดโดยไม่สนใจเศษหินเล็ก ๆ หลายร้อยชิ้นที่อยู่อีกด้านหนึ่งของโลกซึ่งอาจไม่ส่งผลกระทบใด ๆ ต่อวัตถุ แต่เพื่อค้นหาว่าวัตถุใดเป็นวัตถุ ที่ใกล้เคียงที่สุดฉันต้องย้ำไปที่วัตถุทั้งหมดและตำแหน่งของพวกเขาจะเปลี่ยนแปลงตลอดเวลาดังนั้นฉันจึงไม่สามารถทำได้เพียงครั้งเดียว ขณะนี้ฉันกำลังทำสิ่งนี้: private void UpdateBodies(List<GravitatingObject> bodies, GameTime gameTime) { for (int i = 0; i < bodies.Count; i++) { bodies[i].Update(i); } } //... public virtual void …

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

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

3
ฉันจะสร้างวัสดุพิซซ่าชีสแบบยืดและแตกได้อย่างไร
ฉันต้องการสร้างพิซซ่าที่เหมือนจริงและอนุญาตให้ผู้ใช้โต้ตอบกับมัน สิ่งที่ฉันต้องการ: สิ่งที่ฉันสร้าง: ฉันสร้างโมเดลของพิซซ่า (8 ชิ้น) ใน Blender จากนั้นนำเข้าสู่ Unity ชิ้นส่วนของพิซซ่าดูเหมือนประดิษฐ์มากส่วนใหญ่เป็นเพราะ "สามเหลี่ยมแข็ง" ฉันจะทำให้ชีสยืดและแตกเมื่อผู้ใช้ย้ายชิ้นส่วนได้อย่างไร

3
เราจะหลีกเลี่ยง“ เอฟเฟกต์บันได” ในการเคลื่อนไหวของภาพพิกเซลได้อย่างไร
ฉันกำลังแสดงสไปรต์ที่พิกัดพิกเซลที่แน่นอนเพื่อหลีกเลี่ยงผลเบลอที่เกิดจากการลดรอยหยัก (สไปรต์เป็นพิกเซลศิลปะและจะดูแย่หากกรอง) อย่างไรก็ตามเนื่องจากการเคลื่อนที่ของวัตถุนั้นเกี่ยวข้องกับความเร็วตัวแปรแรงโน้มถ่วงและปฏิกิริยาทางกายภาพวิถีจึงถูกคำนวณด้วยความแม่นยำระดับพิกเซลย่อย ที่ความเร็วหน้าจอขนาดใหญ่พอ (vΔtมากกว่า 2 หรือ 3 พิกเซล) นี้ทำงานได้ดีมาก อย่างไรก็ตามเมื่อความเร็วมีขนาดเล็กเอฟเฟกต์บันไดที่เห็นได้ชัดเจนสามารถปรากฏขึ้นได้โดยเฉพาะอย่างยิ่งในแนวเส้นทแยงมุม นี่ไม่ใช่ปัญหาที่ความเร็วหน้าจอช้ามาก (v << 1 พิกเซลต่อวินาที) ดังนั้นฉันจึงมองหาวิธีแก้ปัญหาสำหรับค่าความเร็วกลางเท่านั้น ทางด้านซ้ายเป็นเส้นทางที่พล็อตสำหรับความเร็วขนาดใหญ่ที่ได้จากการปัดเศษของพิกัดวัตถุ ตรงกลางคุณจะเห็นว่าเกิดอะไรขึ้นเมื่อความเร็วมีขนาดเล็กลงและเอฟเฟกต์บันไดที่ฉันกำลังพูดถึง ทางด้านขวาสถานทีของเส้นทางการเคลื่อนที่ที่ฉันต้องการ ฉันสนใจแนวคิดของอัลกอริทึมในการกรองวิถีเพื่อลดนามแฝงในขณะที่ยังคงพฤติกรรมเดิมที่ความเร็วสูงและขนาดเล็ก ฉันสามารถเข้าถึงΔtตำแหน่งทันทีและความเร็วเช่นเดียวกับจำนวนโดยพลการของค่าก่อนหน้า แต่เนื่องจากเป็นการจำลองแบบเรียลไทม์ฉันจึงไม่ทราบเกี่ยวกับค่าในอนาคต . โปรดทราบว่าเนื่องจากการจำลองทางฟิสิกส์การเปลี่ยนแปลงทิศทางอย่างฉับพลันอาจเกิดขึ้นได้เช่นกัน

3
ทำไม RK4 ถึงดีกว่าการรวมออยเลอร์? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน8 เดือนที่ผ่านมา ในตอนท้ายของสไลด์ที่ยิ่งใหญ่เหล่านี้ผู้เขียนเปรียบเทียบผู้รวมระบบที่แตกต่างกันทั้งหมดที่นำเสนอ ไม่ทางใดก็ทางหนึ่งพวกเขาทั้งหมดสั้นยกเว้นการปรับปรุงการรวมออยเลอร์และการรวมRunge Kutta 4ซึ่งทั้งสองผ่านการทดสอบทั้งหมด ฉันคิดว่าฉันควรจะพูดถึงว่าฉันกำลังทำงานในเกม 2D ที่มีวิชาฟิสิกส์ไม่มาก ฉันแค่อยากรู้ว่าการรวมออยเลอร์ที่ปรับปรุงแล้วจะสั้นและ RK4 จะต้องใช้แทน เกมของฉันประกอบด้วยแรงโน้มถ่วงง่ายๆ (กระโดดและล้ม) เคลื่อนไหวตามแนวแกน X และ Y และการชนกันของกล่องสี่เหลี่ยม มันคุ้มค่าหรือไม่ที่จะนำ RK4 ไปใช้หรือจะปรับปรุงออยเลอร์ให้เพียงพอหรือไม่? ฉันเห็นการสนทนาจำนวนมากที่ผู้ใช้ของ Euler Integration ถูกตีสอน แต่จากสิ่งที่ฉันเห็นการปรับปรุง Euler ที่ปรับปรุงนั้นมีความสำคัญในเรื่อง 2D ง่าย ๆ ฉันคิดว่ามันจะเร็วขึ้นด้วย

4
มีเครื่องยนต์ฟิสิกส์ 2 มิติที่สามารถจำลองของเหลวและก๊าซได้หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ณ จุดนี้แพลตฟอร์มและภาษาการเขียนโปรแกรมไม่สำคัญว่าฉันแค่อยากจะรู้ว่ามีบางสิ่งที่มีอยู่สำหรับเรื่องนี้ ความช่วยเหลือใด ๆ ที่ชื่นชม
20 2d  physics 

6
ฉันจะสร้างเอนจินฟิสิกส์ 2D ได้อย่างไร [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน6 ปีที่ผ่านมา เกมที่ทันสมัยที่สุดที่ฉันทำคือเกมพูล 8 ลูกที่สร้างด้วยเครื่องมือฟิสิกส์ Box2dFlashAS3 และเกมแพลตฟอร์มที่มีเลเวล เมื่อฉันทำเกมแพลตฟอร์มฉันมักจะอยากรู้วิธีสร้างเครื่องยนต์เพื่อที่ฉันจะได้ใช้มันได้อีกครั้ง เมื่อฉันเห็นเกมที่มีทางลาดเอียงโค้งแรงโน้มถ่วงที่สมบูรณ์แบบและฟิสิกส์ในชีวิตจริงฉันหวังเสมอว่าฉันรู้วิธีการเขียนโปรแกรม โปรดแนะนำเทคนิคและบทความสำหรับฐานความรู้ที่เกี่ยวข้องที่จำเป็น

6
โครงสร้างข้อมูลสำหรับการแก้ไขและเธรด?
ฉันได้รับการจัดการกับปัญหาการกระเพื่อมอัตราเฟรมกับเกมของฉันเมื่อเร็ว ๆ นี้และดูเหมือนว่าทางออกที่ดีที่สุดจะเป็นที่แนะนำโดย Glenn Fiedler (Gaffer ในเกม) ในคลาสสิกFix Your Timestep! บทความ. ตอนนี้ - ฉันใช้ขั้นตอนเวลาที่แน่นอนสำหรับการอัปเดตของฉันแล้ว ปัญหาคือฉันไม่ได้ทำการแก้ไขที่แนะนำสำหรับการเรนเดอร์ ผลที่สุดคือฉันได้รับสองเท่าหรือข้ามเฟรมหากอัตราการแสดงผลของฉันไม่ตรงกับอัตราการอัปเดตของฉัน สิ่งเหล่านี้สามารถสังเกตเห็นได้ชัดเจน ดังนั้นฉันจึงต้องการเพิ่มการแก้ไขในเกมของฉัน - และฉันสนใจที่จะรู้ว่าคนอื่นมีโครงสร้างข้อมูลและรหัสของพวกเขาเพื่อสนับสนุนสิ่งนี้อย่างไร เห็นได้ชัดว่าฉันจะต้องจัดเก็บ (ที่ไหน / อย่างไร?) ข้อมูลสถานะเกมสองชุดที่เกี่ยวข้องกับโหมดแสดงภาพของฉันเพื่อให้สามารถแก้ไขระหว่างพวกเขาได้ นอกจากนี้ - นี่เป็นสถานที่ที่เหมาะสำหรับเพิ่มเธรด ฉันคิดว่าเธรดการอัปเดตสามารถทำงานในสถานะเกมที่สามได้โดยปล่อยให้อีกสองสำเนาเป็นแบบอ่านอย่างเดียวสำหรับเธรดการแสดงผล (นี่เป็นความคิดที่ดีใช่ไหม) มันดูเหมือนว่าจะมีสองหรือสามรุ่นของรัฐของเกมสามารถนำประสิทธิภาพการทำงานและ - ไกลที่สำคัญกว่า - ความน่าเชื่อถือและผลิตพัฒนาปัญหาเมื่อเทียบกับมีเพียงรุ่นเดียว ดังนั้นฉันจึงสนใจเป็นพิเศษในวิธีการลดปัญหาเหล่านั้น โดยเฉพาะอย่างยิ่งผมคิดว่าเป็นปัญหาของวิธีจัดการกับการเพิ่มและลบวัตถุออกจากสถานะเกม ในที่สุดดูเหมือนว่าบางรัฐอาจไม่จำเป็นต้องทำการเรนเดอร์โดยตรงหรืออาจจะยากเกินกว่าที่จะติดตามเวอร์ชั่นต่าง ๆ ของ (เช่น: เอ็นจิ้นฟิสิกส์ของบุคคลที่สามที่เก็บสถานะเดี่ยว) - ดังนั้นฉันสนใจที่จะทราบ ผู้คนจัดการข้อมูลประเภทนั้นภายในระบบดังกล่าว

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

2
โดยทั่วไปส่วนประกอบของฟิสิกส์หรือกราฟิกนั้นสร้างขึ้นในระบบที่มุ่งเน้นส่วนประกอบได้อย่างไร
ฉันใช้เวลา 48 ชั่วโมงในการอ่านข้อมูลเกี่ยวกับระบบ Object Component และรู้สึกว่าฉันพร้อมที่จะเริ่มนำไปใช้งานแล้ว ฉันได้รับคลาส Object และ Component พื้นฐานแล้ว แต่ตอนนี้ฉันต้องเริ่มสร้างส่วนประกอบจริงฉันสับสนเล็กน้อย เมื่อฉันนึกถึงพวกเขาในแง่ของ HealthComponent หรืออะไรบางอย่างที่โดยพื้นฐานแล้วจะเป็นเพียงแค่คุณสมบัติมันก็สมเหตุสมผลดี เมื่อมันเป็นเรื่องทั่วไปมากขึ้นในส่วนของฟิสิกส์ / กราฟิกฉันสับสนเล็กน้อย คลาส Object ของฉันมีลักษณะเช่นนี้จนถึงตอนนี้ (หากคุณสังเกตเห็นการเปลี่ยนแปลงใด ๆ ที่ฉันควรทำโปรดแจ้งให้เราทราบยังใหม่ต่อเรื่องนี้) ... typedef unsigned int ID; class GameObject { public: GameObject(ID id, Ogre::String name = ""); ~GameObject(); ID &getID(); Ogre::String &getName(); virtual void update() = 0; // …

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

2
ในเกมแพลตฟอร์ม 2 มิติจะทำให้แน่ใจได้อย่างไรว่าผู้เล่นเคลื่อนที่อย่างราบรื่นบนพื้นที่ลาดเอียง?
ฉันกำลังพัฒนาเอ็นจิ้นฟิสิกส์สำหรับเกมแพลตฟอร์ม 2D ฉันใช้ทฤษฎีแกนแยกสำหรับการตรวจจับการชน พื้นผิวดินถูกสร้างขึ้นจากกล่อง bounded oriented โดยผู้เล่นเป็นกล่อง bounding bounded แกน (โดยเฉพาะฉันใช้อัลกอริทึมจากหนังสือ "การตรวจจับการชนกันแบบเรียลไทม์" ซึ่งทำการตรวจจับการชนกันของ OBB โดยใช้ SAT) ฉันใช้สัมประสิทธิ์การคืนค่าที่ค่อนข้างเล็ก (ใกล้กับศูนย์) ในการตอบสนองการชนเพื่อให้แน่ใจว่าวัตถุแบบไดนามิกไม่ได้เจาะสภาพแวดล้อม เครื่องยนต์ส่วนใหญ่ใช้งานได้ดีฉันแค่กังวลเกี่ยวกับเคสขอบบางอย่างที่อาจเกิดขึ้นได้ ตัวอย่างเช่นในแผนภาพ A, B และ C เป็นพื้นผิวดิน ผู้เล่นมุ่งหน้าไปทางซ้ายตามแนว B ไปทาง A ดูเหมือนว่าสำหรับฉันเนื่องจากความไม่ถูกต้องกล่องผู้เล่นอาจอยู่ด้านล่างกล่อง B เล็กน้อยเมื่อมันดำเนินต่อไปเรื่อย ๆ เมื่อถึง A ดังนั้นมุมซ้ายล่างของผู้เล่นอาจชนกับด้านขวาของ A ซึ่งจะไม่เป็นที่พึงปรารถนา (เนื่องจากความตั้งใจคือให้ผู้เล่นเคลื่อนที่อย่างราบรื่นไปด้านบนของ A) ดูเหมือนว่าปัญหาที่คล้ายกันอาจเกิดขึ้นเมื่อผู้เล่นอยู่ด้านบนของกล่อง C เคลื่อนไปทางซ้ายไปยัง B - จุดที่รุนแรงที่สุดของ B สามารถชนกับด้านซ้ายของผู้เล่นแทนที่จะเป็นมุมล่างซ้ายของผู้เล่นเลื่อนขึ้นและซ้าย เหนือ …
18 2d  physics  platform 

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