আমি ভাবছিলাম যে কয়েকটি সাধারণ 3 ডি কার রেসিং গেমগুলিতে সংঘর্ষগুলি কীভাবে হয় (বিশেষত আউটরুন 2 / মোটোরেরারের মতো গেমগুলিতে)।
জটিল পরিবেশ (উন্মুক্ত বিশ্ব) সহ ক্লাসিক কার রেসিং গেমগুলিতে, আমি অনুমান করি যে এটি একটি বেসিক বাক্স (গাড়ির জন্য) বিমানের সংঘর্ষে (ট্র্যাকের জন্য, অন্য কোনও জিনিস তৈরির জন্য) দিয়ে করা হয়েছে। কিছু বাউন্ডিং বাক্স ব্যবহার করে পুরো জিনিসটি অনুকূলিত করা হবে (এভাবেই অনেকগুলি খেলায় সংঘর্ষ হয়)।
আউটরুন 2 / মোটোরেসারের মতো গেমটিতে গেমপ্লেটি এতটাই সহজ যে বিকাশকারীদের সম্ভবত এটির প্রয়োজন নেই এবং সবকিছুই অনেক সহজ করা যেতে পারে। যাঁরা এটি কখনও খেলেন না, তাদের পক্ষে এখানে সুনির্দিষ্ট:
- গাড়ি / বাইকটি সর্বদা রাস্তায় আঠালো থাকে।
- রাস্তাটি সর্বদা একই আকারের এবং খুব সাধারণ আকারের হয়।
- কেবলমাত্র সম্ভাবনাগুলি হ'ল সেই রাস্তাটি অনুসরণ করা, রাস্তা ছেড়ে যাওয়া সম্ভব নয় বা অন্য কোনও কিছুর সাথে সংঘর্ষে পড়তে হবে (অন্যান্য গাড়ি / বাইক বাদে তবে আমাদের যত্ন নেই)।
- আপনি যখন রাস্তার সাথে সংঘর্ষে আসেন তখন খুব প্রাথমিক আরকেডের সংঘর্ষ হয় (গাড়িটি কেবল এ থেকে দূরে ঠেলে দেওয়া হয়)
এখানে আমার মনে হয় সংঘাত (কীভাবে) করা হয়েছিল done
পুরো ট্র্যাকটি 3 ডি বেজিয়ার কার্ভ হিসাবে বিশাল হিসাবে বিবেচিত হতে পারে। এই বক্ররেখা থেকে, রাস্তা বহুভুজগুলি উত্পন্ন করা যেতে পারে (সম্মুখের, বাম এবং বক্ররেখা থেকে তৈরি ভেক্টর ব্যবহার করে)। অন্যান্য উপাদান (যেমন ঘর, গাছ, ...) এও এই পদ্ধতিটি ব্যবহার করে স্থাপন করা এবং সারিবদ্ধ করা যেতে পারে।
তারপরে, সংঘর্ষগুলি পরিচালনা করতে (এবং গাড়ি আঁকুন):
1) বর্তমান গাড়ী 3 ডি অবস্থান থেকে 3 ডি বক্ররেখানের নিকটতম অবস্থানটি সন্ধান করুন। অন্য কথায়, 3 ডি গাড়ী অবস্থানকে বেজিয়ার বক্র অবস্থানে রূপান্তর করুন। রাস্তার প্রতিটি 3 ডি অবস্থান 3 ডি বক্ররেখা ( t
) + পার্শ্বীয় স্থানচ্যুতি ( d
) সহ একটি স্থানচ্যুতি হিসাবে বিবেচিত হতে পারে । চিত্রটি পরিষ্কার না হলে নীচের চিত্রটি পরীক্ষা করুন (এটি একটি 2 ডি উদাহরণ তবে এটি সহজে 3 ডি তে প্রযোজ্য)।
যখন t = 0 গাড়ি ট্র্যাক বিভাগের শুরুতে থাকে, যখন t = 1 গাড়িটি শেষে থাকে। যখন d = -1 বা 1 গাড়ি ট্র্যাকের সীমানায় থাকে, যখন d = 0 গাড়ি রাস্তার মাঝখানে থাকে
2) গাড়িটি রাস্তায় সারিবদ্ধ করে t
এবং d
(খুব সহজ: যে কোনও t
এবং d
মানগুলির জন্য আমি 3 ডি অবস্থান + আপ / সামনের / বাম ভেক্টর পেতে পারি) can গাড়ী এখন রাস্তায় আঠালো হয়
3) d
গাড়ির পার্শ্বীয় স্থানচ্যুতি পরীক্ষা করুন । মানটি যদি খুব বড় হয় (d > 1)
বা কম (d < -1)
গাড়ি ট্র্যাকের বাইরে থাকে। গাড়িটি সঠিক জায়গায় রাখার জন্য কেবল এটি ক্লিপ করুন।
এটি 3 ডি কুলিংও খুব সহজ করে তোলে, কেবল বর্তমান গাড়ির t
অবস্থান থেকে ট্র্যাকটি আঁকুন t + some_big_enough_value_to_avoid_visible_clipping
।
অথবা সম্ভবত আমি পুরোপুরি ভুল: কেবলমাত্র গাড়ির সংঘর্ষ (বাউন্ডিং বাক্স) এবং ট্র্যাকের প্রতিনিধিত্বকারী বহুবিধ একটি খুব সরল সেট (বিল্ডিং এবং এই জাতীয়) ছাড়াই এটি খুব দ্রুত এবং সহজতর হত। 3 ডি ওয়ার্ল্ড (এবং ফলস্বরূপ কলিশ মডেল) কিছু তৃতীয় পক্ষের সরঞ্জাম (গেমটি চালানোর সময় আর 3 ডি বক্ররেখা নয়, বহুগুণের একগুচ্ছ) ব্যবহার করে সহজেই আগে তৈরি করা হত।