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

2
อัลกอริทึมสำหรับการแพร่กระจายฉลากในวิธีที่ดึงดูดสายตาและใช้งานง่าย
เวอร์ชั่นสั้น มีรูปแบบการออกแบบสำหรับการกระจายฉลากยานพาหนะในแบบที่ไม่ทับซ้อนกันวางไว้ใกล้กับยานพาหนะที่พวกเขาอ้างถึงมากที่สุดหรือไม่? ถ้าไม่มีวิธีใดที่ฉันแนะนำให้ปฏิบัติได้? คุณจะใช้สิ่งนี้ด้วยตนเองอย่างไร? รุ่นขยาย ในเกมที่ฉันเขียนฉันมีวิสัยทัศน์ที่ชัดเจนจากยานพาหนะทางอากาศของฉัน ฉันมีป้ายเล็ก ๆ ติดกับคีย์ข้อมูลเกี่ยวกับยานพาหนะแต่ละคันด้วย นี่เป็นภาพหน้าจอจริง: ตอนนี้เนื่องจากยานพาหนะสามารถบินในระดับความสูงที่แตกต่างกันไอคอนของพวกเขาอาจทับซ้อนกัน อย่างไรก็ตามฉันไม่ต้องการให้ป้ายกำกับของพวกเขาซ้อนทับกัน (หรือป้ายกำกับจากยานพาหนะ 'A' ทับไอคอนรถถัง 'B') ขณะนี้ฉันสามารถตรวจสอบการชนกันระหว่างสไปรท์และผมก็ผลักดันออกไปป้ายที่กระทำผิดในทิศทางตรงข้ามกับผีสางมิฉะนั้นการที่คาบเกี่ยวกัน สิ่งนี้ใช้ได้ในสถานการณ์ส่วนใหญ่ แต่เมื่อน่านฟ้าหนาแน่นผู้คนสามารถขับป้ายได้ไกลจากยานพาหนะแม้ว่าจะมีทางเลือก "ฉลาด" ทางเลือก ตัวอย่างเช่นฉันได้รับ: B - label A -----------label C - label มันจะดีกว่า (= ฉลากใกล้กับยานพาหนะ) เพื่อรับ: B - label label - A C - label แก้ไข:มันจะต้องได้รับการพิจารณาว่าข้างตัวถังรถที่ทับซ้อนกันอาจจะมีการกำหนดค่าอื่น ๆ ที่labellab'labelสามารถทับซ้อนกัน (ตัวอย่าง ASCII-art แสดงตัวอย่างรถสามคันที่อยู่ใกล้กันมากซึ่งฉลากของAจะทับไอคอนของBและC) ฉันมีสองแนวคิดเกี่ยวกับวิธีการปรับปรุงสถานการณ์ปัจจุบัน …

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

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

2
นำทางด้วยอุปสรรคในเกม Warcraft 3 เช่นเดียวกับ
พิจารณาการค้นหาแบบ A บนแผนที่แบบเรียงต่อกัน รหัสตรงไปข้างหน้าจะเป็น: หากมีหน่วยอยู่ภายในเซลล์นั้นแสดงว่าไม่สามารถเข้าถึงได้นี่เป็นสิ่งที่ตกลง แต่มีปัญหาความละเอียดของแผนที่ เมื่อฉันมองเข้าไปใน Warcraft 3 มีสัตว์ประหลาดและโครงสร้างต่าง ๆ มีรัศมีที่แตกต่างกันและคุณสามารถเดินเข้าไปใกล้มากซึ่งคล้ายกับเวกเตอร์ที่ใช้วิธีนี้ถูกนำมาใช้อย่างไร นอกจากนี้โซลูชันมาตรฐานคือการรวมการตรวจจับการชนกันของสิ่งกีดขวางการเคลื่อนที่เข้ากับอัลกอริธึมการค้นหาเส้นทางเช่น Warcraft 3
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.