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

6
การนำลวดพันสายไฟ (เช่น Worms Ninja Rope) มาใช้ในเครื่องมือฟิสิกส์ 2D
เมื่อไม่นานมานี้ฉันได้ทดลองใช้เชือกฟิสิกส์และฉันพบว่าวิธีแก้ปัญหา "มาตรฐาน" - การทำเชือกจากชุดของวัตถุที่พันกันด้วยสปริงหรือข้อต่อ - ไม่น่าพอใจ โดยเฉพาะอย่างยิ่งเมื่อการแกว่งเชือกมีความเกี่ยวข้องกับการเล่นเกม ฉันไม่สนใจเกี่ยวกับความสามารถของเชือกในการห่อหุ้มหรือหย่อนยาน สำหรับการเล่นเกมสิ่งที่สำคัญคือความสามารถในการพันเชือกเพื่อล้อมรอบสภาพแวดล้อมและจากนั้นก็แกะออก มันไม่จำเป็นต้องทำตัวเหมือนเชือก - "ลวด" ซึ่งประกอบด้วยส่วนของเส้นตรงจะทำ นี่คือภาพประกอบ: สิ่งนี้คล้ายกับ "Ninja Rope" จากเกมเวิร์ม เพราะฉันใช้เครื่องมือฟิสิกส์ 2D - สภาพแวดล้อมของฉันประกอบด้วยรูปหลายเหลี่ยมนูน 2 มิติ (โดยเฉพาะฉันใช้ SAT ใน Farseer) ดังนั้นคำถามของฉันคือ: คุณจะใช้เอฟเฟกต์ "การห่อ" ได้อย่างไร ดูเหมือนว่าจะเห็นได้ชัดว่าการวางสายนั้นจะประกอบด้วยชุดของส่วนของเส้นที่ "แยก" และ "เข้าร่วม" และส่วนสุดท้าย (ใช้งานอยู่) ของบรรทัดนั้นซึ่งวัตถุที่กำลังเคลื่อนที่ติดอยู่นั้นจะเป็นรอยต่อที่มีความยาวคงที่ แต่อะไรคือคณิตศาสตร์ / อัลกอริธึมที่เกี่ยวข้องในการพิจารณาว่าเมื่อใดและที่ใดที่จะต้องแบ่งเซกเมนต์บรรทัดที่ใช้งาน และเมื่อมันจะต้องเข้าร่วมกับกลุ่มก่อนหน้า? (ก่อนหน้านี้คำถามนี้ถามเกี่ยวกับการทำสิ่งนี้เพื่อสภาพแวดล้อมแบบไดนามิกด้วย - ฉันตัดสินใจที่จะแยกมันออกเป็นคำถามอื่น ๆ )

2
ฉันจะสร้างระเบิดระเบิดใน Farseer ที่ผลักวัตถุใกล้เคียงออกไปได้อย่างไร
ฉันพยายามสร้างระเบิดใน Farseer ฉันสร้างวงกลมสำหรับระเบิด อย่างไรก็ตามหากระเบิดระเบิดวัตถุ (ร่าง) ที่อยู่รอบ ๆ ควรบินหนีเพราะมันถูกผลักกลับด้วยแรงระเบิดมหาศาล ฉันไม่แน่ใจว่าจะสร้างแรงนั้นได้อย่างไร - ฉันจะทำมันได้อย่างไร

3
คุณทำ AI เส้นทางต่อไปนี้ภายในเอนจินฟิสิกส์ 2 มิติเช่น farseer / box2d ได้อย่างไร
ฉันกำลังอยู่ระหว่างการเคลื่อนย้ายเกมบนลงล่างแบบ 2d ฉันได้ทำงานเป็นเครื่องมือทางฟิสิกส์ของร่างกายที่แข็งแกร่งอย่าง Farseer จนถึงตอนนี้ฉันเพิ่งแฮกรหัสฟิสิกส์ของฉันเองเมื่อจำเป็น ฉันพยายามเรียนรู้วิธีการทำสิ่งต่างๆที่นี่ อะไรคือวิธีที่เหมาะสมในการทำให้ AI ของคุณเดินไปตามเส้นทางที่กำหนดเมื่อคุณทำให้พวกมันแข็งตัวอยู่ภายในเครื่องยนต์ฟิสิกส์? หากฉันมีเส้นทางของโหนดการนำทางบนแผนที่ของฉันที่ฉันต้องการให้ AI ติดตามก่อนหน้านี้ฉันจะย้ายพวกเขาไปตามเส้นทางด้วยตนเองโดยการคำนวณตำแหน่งต่อไปที่พวกเขาควรจะอยู่ในขั้นตอนถัดไปและตั้งค่าเหล่านั้นด้วยตนเอง . แต่ตอนนี้พวกเขามีร่างกายที่แข็งแรงและถูกชนและกองกำลังใด ๆ ที่อาจโจมตีพวกเขาและทำให้พวกเขาหลุดออกจากเส้นทาง ดังนั้นเพื่อให้การเคลื่อนไหว AI ฉันเชื่อว่าตอนนี้ฉันควรจะใช้แรงกระตุ้น / กองกำลังกับพวกเขา? ฉันไม่ควรตั้งค่าตำแหน่งของแต่ละเฟรมด้วยตนเองอีกต่อไป ดังนั้นฉันคิดว่าฉันต้องออกไปจากโลกที่กำหนดไว้โดยที่ฉันบังคับให้ AI ปฏิบัติตามเส้นทางไปสู่โลกที่ไม่กำหนดซึ่งพวกเขาจะได้รับผลกระทบในทิศทางใด ๆ หากตีและฉันก็ผลักพวกเขาไปยังโหนดถัดไปในเส้นทาง เพื่อให้พวกเขาย้าย นั่นถูกต้องใช่ไหม? นั่นเป็นวิธีที่คนอื่นทำหรือไม่ นี่ทำให้เกิดคำถามบางอย่างเกี่ยวกับวิธีหลีกเลี่ยง AI ของคุณที่ติดอยู่ในมุมหนึ่งของทิวทัศน์ตอนนี้ว่าพวกเขาไม่ได้เดินในเส้นทางที่ถูกต้องพวกคุณจัดการกับสิ่งนั้นอย่างไร หรือจะเป็นการดีกว่าถ้าจะผสมทั้งสองวิธีและยังคงให้ AI ของคุณติดตามเส้นทางคงที่ด้วยการตั้งตำแหน่งของตนเองและตอบสนองต่อแรงอื่น ๆ ภายใต้สถานการณ์ที่คุณสามารถควบคุมได้ง่าย? ขอบคุณสำหรับคำแนะนำใด ๆ

3
ทำไม Farseer 2.x จัดเก็บขมับเป็นสมาชิกและไม่อยู่ในสแต็ก (.สุทธิ)
UPDATE: คำถามนี้หมายถึง Farseer 2.x 3.x ที่ใหม่กว่าดูเหมือนจะไม่ทำเช่นนี้ ฉันใช้ Farseer Physics Engine อย่างกว้างขวางในขณะนี้และฉันสังเกตเห็นว่าดูเหมือนว่าจะเก็บค่าชั่วคราวจำนวนมากในฐานะสมาชิกของคลาสและไม่ได้อยู่ในสแต็กอย่างที่คาดไว้ นี่คือตัวอย่างจากBodyชั้นเรียน: private Vector2 _worldPositionTemp = Vector2.Zero; private Matrix _bodyMatrixTemp = Matrix.Identity; private Matrix _rotationMatrixTemp = Matrix.Identity; private Matrix _translationMatrixTemp = Matrix.Identity; public void GetBodyMatrix(out Matrix bodyMatrix) { Matrix.CreateTranslation(position.X, position.Y, 0, out _translationMatrixTemp); Matrix.CreateRotationZ(rotation, out _rotationMatrixTemp); Matrix.Multiply(ref _rotationMatrixTemp, ref _translationMatrixTemp, …

3
ปูกระเบื้องฟิสิกส์โดยใช้ Farseer
ฉันมีปัญหากับ Farseer Physics Engine ซึ่งในสภาพแวดล้อมที่มีการปูกระเบื้องวัตถุของฉันจะโต้ตอบกับมุมของวัตถุอื่น ๆ ในบางครั้งแม้ว่าวัตถุเหล่านั้นจะจัดเรียงอย่างสมบูรณ์แบบ ฉันได้อ่านเกี่ยวกับผู้คนที่แนะนำให้คุณคำนวณและสร้างวัตถุที่ใหญ่กว่าหนึ่งโดยใช้ Marching Squares หรือสิ่งที่คล้ายกัน อย่างไรก็ตามนี่ไม่ใช่ตัวเลือกเนื่องจากฉันต้องการให้แต่ละกระเบื้องมีคุณสมบัติทางกายภาพที่แตกต่างกันเช่นความเสียดทานและการซ่อมแซมที่แตกต่างกัน คำถามของฉันคืออะไรเป็นสาเหตุของมันคือมันลอยประเด็นความแม่นยำหรืออย่างอื่น? และมีวิธีแก้ไขหรือไม่โดยไม่ทำลายทั้งฟิสิกส์ของเครื่องยนต์?

2
จะใช้การระเบิดแบบ 2d ซึ่งจะสร้างความเสียหายโดยคำนึงถึงการครอบคลุมและระยะทางอย่างไร
ฉันจะสร้างการระเบิด 2D ในลักษณะที่จะสร้างความเสียหายให้กับตัวละครที่ซ่อนอยู่ด้านหลังลังหรือฝาครอบอื่น ๆ ได้อย่างไร ความเสียหายในอุดมคติจะขึ้นอยู่กับความแข็งแรงของฝาครอบ (เช่นผนังโลหะจะป้องกันได้ดีกว่าลังไม้) ความเสียหายในอุดมคติจะลดลงตามระยะทางเช่นกัน ฉันจะใช้พอร์ตของเครื่องยนต์ฟิสิกส์ Box2D - Farseer ขอบคุณ.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.