คำถามติดแท็ก collision-detection

การตรวจจับการชนกันคือการพิจารณาว่าเอนทิตีสองคนหรือมากกว่านั้นทำการติดต่อกันระหว่างการเล่นเกม

3
การสร้าง Plattformer - จะทราบได้อย่างไรว่าผู้เล่นได้รับอนุญาตให้กระโดดได้หรือไม่?
ฉันกำลังสร้างเกม Plattformer Jump n 'Run Style ง่ายๆ ฉันไม่ได้ใช้ไทล์ - ฉันมีรูปทรงเรขาคณิตสำหรับเอนทิตีระดับของฉัน (และผู้เล่นก็เป็นหนึ่งเดียวกัน) ฉันเสร็จรหัสตรวจจับการชนกันของฉันและทุกอย่างทำงานได้ดีจนถึงตอนนี้ ต่อไปฉันอยากจะกระโดด เพียงตรวจสอบว่าผู้เล่นกดคีย์ที่เหมาะสมและเพิ่มความเร็วขึ้น ทำงานได้ดี แต่มันใช้งานได้แม้ว่าผู้เล่นจะอยู่ในอากาศซึ่งไม่ใช่สิ่งที่ฉันต้องการ ;-) ดังนั้นฉันต้องตรวจสอบว่าผู้เล่นยืนอยู่บนบางสิ่งบางอย่าง ความคิดแรกของฉันคือการตรวจสอบว่ามีการชนกันในเฟรมสุดท้ายและทำเครื่องหมายผู้เล่นว่า "สามารถกระโดดได้" แต่สิ่งนี้จะกระตุ้นได้หากผู้เล่นชนกำแพงในอากาศ เนื่องจากทักษะทางคณิตศาสตร์ของฉันไม่ดีฉันจึงขอความช่วยเหลือ - แม้แต่คำใบ้ก็ยังต้องใช้วิธีนี้ ขอบคุณ!

4
เป็นความคิดที่ดีไหมที่จะ "แมป" ตำแหน่งของเมาส์บนหน้าจอเพื่อให้การตรวจจับการชนกันทำงานโดยไม่คำนึงถึงความละเอียด
พิจารณาเกมที่ความละเอียดเริ่มต้นคือ 800x600 วัตถุที่มีมาสก์การชนกันอยู่ในโลกของเกมขนาด 800x600 หน้ากากกันการปะทะสามารถตรวจจับได้เมื่อเมาส์ชนกับมัน ตอนนี้ให้พิจารณาว่าเราขยายขนาดเกมได้ถึง 1024x768 (สมมติว่าเราขยายกราฟิกโดยการแสดงทุกอย่างให้เป็นเลเยอร์แล้วขยายขนาดเลเยอร์ทั้งหมดขึ้นในครั้งเดียว) เรามีสองตัวเลือกสำหรับการชนกับเมาส์ทำงานอย่างถูกต้องในความละเอียดใหม่นี้: A. ) ขยายขอบเขตของโลกเป็น 1024x768 และปรับสเกลการชนของวัตถุทุกชิ้นตามลำดับ B. ) "แผนที่" ตำแหน่งของเมาส์ไปสู่โลกดั้งเดิม (800x600) โดย "map" ฉันหมายถึงเพียงแค่ปรับตำแหน่งเมาส์บนโลก 800x600 ดั้งเดิม ตัวอย่างเช่นหากตำแหน่งของเมาส์บนหน้าจอคือ (1024, 768) ดังนั้นตำแหน่งของเมาส์ในโลกคือ (800, 600) ตอนนี้เห็นได้ชัดว่าตัวเลือก B ต้องการวิธีการคำนวณที่น้อยลงและอาจมีข้อผิดพลาดทางเรขาคณิตน้อยกว่า แต่ก็รู้สึกเหมือน "แฮ็ก" สำหรับฉันเช่นมีผลที่ไม่คาดคิดจากการใช้วิธีนี้ที่จะแก้ไขในภายหลัง ฉันควรใช้วิธีใด: A, B หรืออย่างอื่น

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

3
การตรวจจับการชนกันเป็น O เสมอ (n ^ 2)
เครื่องยนต์ฟิสิกส์สามารถลดความซับซ้อนนั้นได้หรือไม่โดยการจัดกลุ่มวัตถุที่อยู่ใกล้กันและตรวจสอบการชนภายในกลุ่มนี้แทนที่จะเทียบกับวัตถุทั้งหมดหรือไม่ (ตัวอย่างเช่นวัตถุที่อยู่ไกลสามารถลบออกจากกลุ่มโดยดูที่ความเร็วและระยะทางจากวัตถุอื่น) ถ้าไม่นั่นทำให้เกิดการปะทะกันเล็กน้อยสำหรับทรงกลม (ใน 3d) หรือดิสก์ (เป็น 2d) หรือไม่ ฉันควรสร้างวงคู่หรือสร้างอาร์เรย์ของคู่แทน? แก้ไข: สำหรับเครื่องยนต์ฟิสิกส์เช่นกระสุนและ box2d การตรวจจับการชนยังคงเป็น O (N ^ 2) หรือไม่

3
การแก้ไขการชนกับกองกำลัง
ในเอนจินฟิสิกส์ 2D ของฉันฉันสามารถตรวจจับการชน AABB กับ AABB และแก้ไขพวกมันได้โดยการหาเวกเตอร์การสอดใส่ที่สั้นที่สุดและเพิ่มลงในตำแหน่งของ AABB การทำเช่นนี้จะ "ผลัก" AABB ตัวแรกนอก AABB ตัวที่สอง แต่ไม่ได้เกี่ยวข้องกับการเปลี่ยนแปลงความเร็ว / การเร่งความเร็วเลย ถ้าฉันเพิ่มการเร่งความเร็วด้วยแรงโน้มถ่วงกับการจำลองความเร็วของไดนามิก AABB แรกยังคงเพิ่มขึ้นแม้ว่าจะวางอยู่บน AABB สถิตที่สอง ในที่สุดความเร็วจะใหญ่เกินไปและไม่สามารถตรวจพบการชนกันได้ (ไดนามิก AABB จะตกลงไปในภาพนิ่ง) ฉันพยายามตั้งค่าความเร็วเป็นศูนย์หลังจากการแก้ปัญหา แต่เห็นได้ชัดว่าใช้งานไม่ได้ดีและสร้างแบบจำลองที่ไม่สมจริง ฉันอ่านออนไลน์ที่แก้ไขการชนโดยการทำงานกับตำแหน่งด้วยตนเองหรือความเร็วไม่ถูกต้อง ฉันพยายามใช้กองกำลัง (มวลคือ "hardcoded" 1 สำหรับตอนนี้): void Body::applyForce(sf::Vector2f mForce) { acceleration += mForce; } void Body::integrate(float mFrameTime) { velocity += acceleration * …

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

5
ดูรายละเอียดการชนกับวัตถุบางอย่างในบริบทบางอย่าง
ฉันสร้างเกมแข่งรถด้วยรถยนต์ใน Unity รถมีพลังเพิ่ม / nitro ในขณะที่เพิ่มระดับฉันไม่ต้องการเบี่ยงเบนเมื่อปะทะกับซอมบี้ แต่ฉันอยากเบี่ยงเบนเมื่อชนกับกำแพง ในทางกลับกันฉันไม่ต้องการเพิกเฉยต่อการปะทะกับซอมบี้เพราะฉันยังต้องการตีพวกมันด้วยการกระแทก ฉันควรจัดการกับสิ่งนี้อย่างไร โดยพื้นฐานแล้วสิ่งที่ฉันต้องการคือรถจะไม่หมุนเมื่อชนกับวัตถุบางอย่าง

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

6
ฉันจะจัดการการตรวจจับการชนกันของภาพสามมิติได้อย่างไร
ฉันต้องการสร้าง platformer สไตล์กระโดดมีมิติเท่ากัน ผู้เล่นควรจะสามารถกระโดดขึ้นไปบนแพลตฟอร์มเหนือพื้นตีด้านข้างของวัตถุ ฯลฯ ฉันจะใช้เอ็นจิ้นเกม 2D ดังนั้นฉันไม่ต้องการเลียนแบบการชนกันของภาพสามมิติแบบเต็มสำหรับมิติที่ฉันไม่ได้ใช้ ฉันคิดว่าควรวางวัตถุในเกมโดยใช้: X, Y, ความกว้างความสูงและ Z สำหรับความลึก การใช้ค่าเหล่านั้นฉันจะตรวจจับการชนได้อย่างไร

3
การชนวัตถุขนาดเล็กและความเร็วสูง: หลีกเลี่ยงการขุดอุโมงค์
แก้ไข / อัปเดต:คำถามที่ใหญ่ที่สุดของฉันตอนนี้คือสมการของ t = ... ที่ว่าเป็นขั้นตอนที่ 3 หรือไม่เป็นวิธีที่ดีกว่า ปัญหาอื่น ๆ ส่วนใหญ่ได้รับการแก้ไขเพียงบางส่วนหรือทั้งหมด แต่ไม่มีความคิดเห็นหรือคำตอบใด ๆ ที่สัมผัสกับปัญหานี้ได้ อาจต้องใช้วิธีการวิเคราะห์อีกครั้งความเร็วและระยะทางมีขนาดใหญ่เกินไปและวัตถุนั้นเล็กเกินไปสำหรับการแก้ปัญหาแบบวนซ้ำ / แบบเรียกซ้ำ (recursive solution) ใด ๆ วิธีแก้ปัญหาแบบวนซ้ำ / แบบวนซ้ำที่จะจัดการกับสถานการณ์ประเภทนี้ได้ดีแล้วฉันก็เปิดรับแน่นอน) ขอบคุณมากสำหรับความช่วยเหลือของคุณทุกคนยอดเยี่ยมและฉันซาบซึ้งในความคิดและความช่วยเหลือของคุณ! ฉันพยายามตรวจหาการชนกันระหว่างวัตถุขนาดเล็กและความเร็วสูง นี่เป็นสถานการณ์ที่การขุดอุโมงค์อาจเกิดขึ้นได้ง่ายมากแม้ในความเร็วต่ำ เรย์แคสต์จะไม่ทำงานเนื่องจากนี่เป็นการตรวจจับการชนกันระหว่างวัตถุความเร็วสูงสองชิ้นไม่ใช่ระหว่างวัตถุหนึ่งกับผนังนิ่ง (ถ้าฉันไม่เข้าใจผิดว่าการส่งสเรย์?) ประสิทธิภาพเป็นสิ่งที่ต้องพิจารณาอย่างมาก ถ้าเป็นไปได้ทั้งหมดฉันต้องการหลีกเลี่ยงการตีที่ยิ่งใหญ่ ฉันมี quadtree ใช้งานได้ดีและมีประสิทธิภาพมาก ( http://en.wikipedia.org/wiki/Quadtree ) ดังนั้นฉันจะแก้ไขและใช้ตามที่อธิบายไว้ด้านล่าง แก้ไข: การลดช่วงเวลาจะไม่ทำงาน ความเร็วที่สูงเกินไปสำหรับการแก้ปัญหานี้ซึ่งหมายความว่าฮิตประสิทธิภาพการทำงานจะดีเกินไปในขณะที่ยังขาดหายไปส่วนใหญ่ของชนอุโมงค์ (ตัวอย่างเช่นฉันอาจมีวัตถุที่มีขนาดประมาณ 1 หน่วยไปด้วยความเร็วที่วัดได้ในหน่วยล้านต่อช่วงเวลา ... ) โซลูชั่นที่เสนอ: ขั้นตอนที่ 1: …

2
การเคลื่อนไหวนั้นขึ้นอยู่กับอัตราเฟรมแม้จะใช้ Time.deltaTime
ฉันมีรหัสต่อไปนี้เพื่อคำนวณการแปลที่จำเป็นในการย้ายวัตถุเกมใน Unity ซึ่งเรียกว่าLateUpdateมา จากสิ่งที่ฉันเข้าใจการใช้งานของฉันTime.deltaTimeควรจะทำให้เป็นอิสระแปลสุดท้ายอัตราเฟรม (โปรดทราบCollisionDetection.Move()เป็นเพียงการแสดง raycasts) public IMovementModel Move(IMovementModel model) { this.model = model; targetSpeed = (model.HorizontalInput + model.VerticalInput) * model.Speed; model.CurrentSpeed = accelerateSpeed(model.CurrentSpeed, targetSpeed, model.Accel); if (model.IsJumping) { model.AmountToMove = new Vector3(model.AmountToMove.x, model.AmountToMove.y); } else if (CollisionDetection.OnGround) { model.AmountToMove = new Vector3(model.AmountToMove.x, 0); } model.FlipAnim = flipAnimation(targetSpeed); // If …

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

4
การตรวจจับการชนกันที่รวดเร็วยิ่งขึ้น
เมื่อไม่นานมานี้ฉันกำลังทำงานกับนักแม่นปืน 2d ที่รวดเร็วและฉันเจอปัญหาอันยิ่งใหญ่ ตรวจจับการชนกัน แน่นอนว่ามันใช้งานได้ แต่ช้ามาก เป้าหมายของฉันคือ: มีศัตรูจำนวนมากบนหน้าจอและให้พวกเขาไม่ได้สัมผัสกัน ศัตรูทั้งหมดกำลังไล่ตามเอนทิตีของผู้เล่น ส่วนใหญ่มีความเร็วเท่ากันดังนั้นไม่ช้าก็เร็วพวกเขาทั้งหมดก็ลงเอยด้วยการเว้นวรรคขณะไล่ล่าผู้เล่น สิ่งนี้ทำให้ปัจจัยความสนุกลดลงอย่างมากสำหรับผู้เล่นดูเหมือนว่าคุณจะถูกไล่ล่าโดยศัตรูเพียงคนเดียวเท่านั้น เพื่อป้องกันไม่ให้พวกเขาใช้พื้นที่เดียวกันฉันได้เพิ่มการตรวจจับการชนกัน (การตรวจจับ 2D ขั้นพื้นฐานมากซึ่งเป็นวิธีเดียวที่ฉันรู้) ซึ่งก็คือ Enemy class update method Loop through all enemies (continue; if the loop points at this object) If enemy object intersects with this object Push enemy object away from this enemy object มันใช้งานได้ดี ตราบใดที่ฉันมี <เอนทิตีศัตรู …

3
วิธีที่ดีที่สุดในการจัดการการชนพร้อมกันในเครื่องมือฟิสิกส์คืออะไร?
ฉันเขียนเอนจิ้นฟิสิกส์ 2d ใน javascript เพื่อให้ฉันสามารถเรียนรู้เพิ่มเติมเกี่ยวกับฟิสิกส์ในวิดีโอเกม ฉันให้มันทำงานอย่างถูกต้องสำหรับการชนกันของร่างกายที่แข็งยกเว้นถ้าร่างกายใด ๆ ชนกับร่างกายสองคนหรือมากกว่าในเวลาเดียวกัน ขณะนี้สำหรับร่างกายที่ชนกันแต่ละคู่ (A, B) ฉันปรับเปลี่ยนความเร็วและความเร็วเชิงมุมของพวกเขาตามแรงกระตุ้นการชนและผลักมันออกจากกัน แต่จากนั้นการตรวจจับการชนและการคำนวณแรงกระตุ้นสำหรับการชนอื่น ๆ ที่เกี่ยวข้องกับ A จะผิด ฉันสามารถสำรวจวิธีใดเพื่อให้เครื่องยนต์ทำงานกับวัตถุ 3+ ที่ชนกัน

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

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