मैं सोच रहा था कि कुछ साधारण 3 डी कार रेसिंग गेम्स में कैसे टकराव होता है (विशेषकर आउट्रून 2 / मोटरसेर जैसे खेलों में)।
जटिल वातावरण (खुली दुनिया) के साथ क्लासिक कार रेसिंग गेम्स में, मुझे लगता है कि यह एक बुनियादी बॉक्स (कार के लिए) से विमान की टक्कर (ट्रैक के लिए, एक अन्य सामान बनाने) के लिए किया जाता है। पूरी चीज़ को कुछ बाउंडिंग बॉक्स का उपयोग करके अनुकूलित किया जाएगा (यह उसी तरह है जैसे टक्कर कई खेलों में की जाती है)।
Outrun 2 / Motoracer जैसे गेम में, गेमप्ले इतनी सरल है कि डेवलपर्स को शायद इसकी आवश्यकता नहीं है और सब कुछ बहुत सरल हो सकता है। जो लोग इसे कभी नहीं खेलते हैं, उनके लिए यहाँ क्या विशिष्ट है:
- कार / बाइक हमेशा सड़क पर चिपकी रहती है।
- सड़क हमेशा एक ही आकार की होती है और इसका आकार बहुत ही सरल होता है।
- एकमात्र संभावना यह है कि उस सड़क का अनुसरण किया जाए, सड़क को छोड़ना संभव नहीं है, या किसी अन्य चीज (अन्य कारों / बाइक को छोड़कर, लेकिन हमें ध्यान नहीं है) के साथ टक्कर में प्राप्त करना है।
- जब आप सड़क से टकराते हैं, तो बहुत बुनियादी आर्केड टकराव होता है (कार को बस इससे दूर धकेल दिया जाता है)
यहां बताया गया है कि मुझे लगता है कि टक्कर (कैसे) की जा सकती है:
पूरे ट्रैक को विशाल 3 डी बेजियर वक्र माना जा सकता है। उस वक्र से, सड़क बहुभुज उत्पन्न हो सकते हैं (वक्र से उत्पन्न सामने, बाएं और ऊपर वैक्टर)। अन्य तत्वों (जैसे घर, पेड़, ...) को भी इस पद्धति का उपयोग करके रखा और संरेखित किया जा सकता है।
फिर, टक्करों को संभालने के लिए (और कार खींचना):
1) वर्तमान कार 3 डी स्थिति से 3 डी वक्र पर निकटतम स्थिति का पता लगाएं। दूसरे शब्दों में, 3 डी कार की स्थिति को बीज़ियर वक्र स्थिति में बदलना। सड़क पर हर 3 डी स्थिति को 3 डी वक्र ( t
) + पार्श्व विस्थापन ( d
) के साथ विस्थापन के रूप में माना जा सकता है । यदि यह स्पष्ट नहीं है तो नीचे दी गई छवि देखें (यह एक 2d उदाहरण है लेकिन यह आसानी से 3 डी पर लागू होता है)।
जब t = 0 कार ट्रैक सेक्शन की शुरुआत में हो, जब t = 1 कार अंत में हो। जब d = -1 या 1 कार ट्रैक की सीमा पर हो, जब d = 0 कार सड़क के बीच में हो
2) कार को सड़क का उपयोग करके संरेखित करें t
और d
(बहुत सरल: किसी भी मूल्य t
और d
मूल्यों के लिए मैं एक 3 डी स्थिति + ऊपर / सामने / बाएं डॉक्टर्स प्राप्त कर सकता हूं)। कार अब सड़क पर चिपकी हुई है
3) d
कार के पार्श्व विस्थापन की जांच करें । अगर मूल्य बहुत बड़ा है (d > 1)
या कम (d < -1)
कार ट्रैक से दूर है। बस इसे सही जगह पर कार लगाने के लिए क्लिप करें।
यह भी 3 डी culling बहुत सरल है, बस वर्तमान कार की t
स्थिति से ट्रैक आकर्षित करने के लिए t + some_big_enough_value_to_avoid_visible_clipping
।
या हो सकता है कि मैं पूरी तरह से गलत हूं: यह कार की टक्कर (एक बाउंडिंग बॉक्स) और पॉलीगनों का एक बहुत ही सरल सेट की जांच करने के लिए बहुत तेज और सरल होगा जो कि ट्रैक (इमारतों और इस तरह के बिना) का प्रतिनिधित्व करते हैं। 3 डी दुनिया (और परिणामस्वरूप कॉलिजन मॉडल) कुछ 3 पार्टी टूल (खेल को चलाने के दौरान कोई और 3 डी वक्र नहीं, सिर्फ पॉलीगनों का एक गुच्छा) का उपयोग करके, बस पहले उत्पन्न किया गया होगा।