अधिक टकराव पैदा किए बिना टकराने वाली वस्तुओं को अलग कैसे करें


11

मान लीजिए मैं एक साधारण असतत टकराव का पता लगाने वाली प्रणाली का उपयोग करता हूं, जहां मैं सभी वस्तुओं को ले जाता हूं, फिर टकरावों की जांच करता हूं। मैं चाहता हूं कि किसी भी टकराने वाली वस्तुओं को अलग (निश्चित रूप से) और उचित प्रतिक्रिया वेग (उछाल, स्लाइड, स्टॉप, आदि) सौंपा जाए।

जब मेरे पास वस्तुओं को टकराने की एक जोड़ी होती है, तो मैं उन्हें एक या दोनों वस्तुओं के साथ टकराए बिना अलग कैसे कर सकता हूं?

जवाबों:


8

यह सामान्य रूप से हल करने के लिए एक आसान समस्या नहीं है। एक भौतिकी इंजन में इसे संचलन सॉल्वर द्वारा संभाला जाएगा। कई अलग-अलग प्रकार के अवरोधक सॉल्वर हैं, लेकिन समझने में सबसे आसान एक अनुक्रमिक आवेग सॉल्वर है।

Erin Catto ने कई पिछले GDC के क्रमिक आवेग सॉल्वर का एक अच्छा विवरण दिया, उन्हें Box2D डाउनलोड पृष्ठ से डाउनलोड किया जा सकता है , उदाहरण के लिए GDC 2009 को देखें।


मैं इस बारे में उत्सुक हूं। यह देखते हुए कि टकराव का पता लगाने और समाधान के लिए कितनी सामान्य आवश्यकता है, मैंने मान लिया है कि कम से कम एक सरलीकृत रिज़ॉल्यूशन एल्गोरिदम आर्केड और एक्शन गेम्स के लिए उपयुक्त है।
एजेएम

2
ज़रुरी नहीं। पुराने दिनों (एसएनईएस आदि) में, उन्हें गेम डिजाइन में बदलाव या समझौता जैसे गोल मुद्दे मिले। उदाहरण के लिए। सुपर मारियो में, जब खिलाड़ी हिट हो जाता है, तो दूसरी टक्करों को बायपास करने के लिए मारियो कुछ सेकंड के लिए अजेय होगा। डबल ड्रैगन में, टक्कर के लिए खिलाड़ी की अनदेखी की जाती है, जब तक कि पीछे की तरफ गिरने के लिए एनीमेशन समाप्त नहीं हो जाता।
युरस्टार

@ अय्यर दरअसल मारियो की दुश्मनों से कोई टक्कर नहीं है। यह तब नुकसान पहुंचाता है जब इसका हिटबॉक्स उन्हें ओवरलैप करता है।
शीतकालीन

3

एकमात्र तरीका जिसे आप ऐसा करने से रोक सकते हैं, वह पहली जगह में प्रवेश को रोकना है। इससे पहले कि आप एक वस्तु को स्थानांतरित करें आप सुनिश्चित करें कि यह एक कानूनी कदम है। ध्यान दें कि इसका मतलब है कि आपको एक-दूसरे में जाने वाली दो वस्तुओं के मामले से बचने के लिए अपनी वस्तुओं को एक बार में स्थानांतरित करना होगा।

यदि कोई प्रवेश नहीं होता है, तो आपको किसी भी स्थिति को रीसेट करने की आवश्यकता नहीं है और इस प्रकार आप किसी भी द्वितीयक प्रवेश को ट्रिगर नहीं करेंगे।


2

आमतौर पर मैं निम्नलिखित कार्य करता हूं:

जब आप वस्तुओं को अलग करते हैं और आप अधिक टकरावों के साथ समाप्त हो जाते हैं, तो आप बस फिर से पुनरावृत्ति करते हैं, जब तक कि अधिकतम मात्रा में कदम नहीं हो जाते हैं या ऑब्जेक्ट एक पूर्वनिर्धारित सीमा से कम प्रवेश करते हैं।


यह बेहद अस्थिर है। आपके खेल में FPS किसी भी समय बढ़ सकता है जब खिलाड़ी प्रकाश वस्तु को धक्का देकर गड़बड़ करता है। इसे अगले फ्रेम में हल करना बेहतर होगा।
विंटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.