বর্তমানে, আমি ইউনিটগুলি স্থানীয় এড়ানোর জন্য পদার্থবিজ্ঞানের প্রভাব বলগুলিকে সিমুলেট করছি তবে এই পদ্ধতিটি কখনও কখনও ইউনিটকে গঠনের বাইরে ঠেলে দেয় এবং ইউনিটগুলি ক্ল্যাম আপ হয়ে গেলে খুব অবাঞ্ছিত প্রভাব ফেলে।
স্টারক্রাফ্ট 2 এর মতো আরটিএস গেমের জন্য কীভাবে স্থানীয় এড়ানো যায়? পদার্থবিজ্ঞান কি সিমুলেটেড বা একটি সর্বস্বত্ব নিয়ন্ত্রক সিদ্ধান্ত নেয় যে কোথায় থাকা উচিত? আমি জানি এই প্রশ্নটি কিছুটা বিস্তৃত হতে পারে তাই আমি স্টারক্র্যাফট 2 এর স্থানীয় বর্জনীয় আচরণগুলি কীভাবে অর্জন করব তা বিশেষভাবে জিজ্ঞাসা করছি; যদিও যে কিছু কাজ করে খুব প্রশংসা হবে।
আমি কোনও কোড খুঁজছি না - কেবল দরকারী সংস্থান বা স্টারক্রাফ্ট 2 (বা অনুরূপ গেমস) কীভাবে স্থানীয় বর্জন পরিচালনা করে তার ব্যাখ্যা।
বর্তমানে, আমার সংঘর্ষ সনাক্তকরণ (অনুপ্রবেশ ভেক্টর সহ), সংঘর্ষের বাহিনী এবং গতিবেগ দ্বারা গতিবেগ প্রয়োগ করা হয়েছে। প্রতিটি ইউনিট একটি সংঘর্ষের জন্য অন্যটির বিরুদ্ধে চেক করা হয় - যদি তারা সংঘর্ষ হয়, অবিলম্বে অনুপ্রবেশ ভেক্টর দ্বারা অবজেক্টগুলি অফসেট করা হয় তবে সংঘর্ষ বল প্রয়োগ করা হয়। তারপরে আরেকটি লুপ বস্তুগুলিকে তাদের বেগ দ্বারা সরায় এবং বেগের উপরে টেনে আনতে প্রযোজ্য। অফসেট ক্লাম্পড ইউনিটগুলিতে অতিরিক্ত সংঘর্ষের বল প্রয়োগের সমস্যাটিকে প্রশমিত করে, তবে ইউনিটগুলি এখনও মাঝে মাঝে গুলি চালিয়ে যায়।
আমি যে সমাধানটির সন্ধান করছি তার জন্য নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করতে হবে (স্টারক্রাফ্ট ২ তে):
- বস্তুগুলি ওভারল্যাপ হয় না; বা কমপক্ষে ওভারল্যাপগুলি অবশ্যই অবশেষে সমাধান করা উচিত।
- অবজেক্টগুলি একে অপরকে প্রয়োজনের চেয়ে বেশি দূরে ঠেলে দেয় না যাতে 2 ইউনিট গঠনে একে অপরের পাশে যেতে পারে।
- বস্তুগুলি একই গন্তব্যের দিকে ঝাঁপিয়ে পড়লে কোনও অদ্ভুত আচরণ হওয়া উচিত নয়।
- বিভিন্ন আকারের এমনকি বিভিন্ন উত্তল আকারের ইউনিটগুলি সমর্থন করতে পারে।
আমি এতক্ষণ যা ভাবছিলাম তা হ'ল সংঘর্ষগুলি সনাক্তকরণের পরিবর্তে, ভবিষ্যতের সংঘর্ষগুলির জন্য সনাক্ত করা যাতে ওভারল্যাপটি কখনই ঘটে না। তারপরে সীমাবদ্ধতাটি প্রয়োগ করুন, এটি নিশ্চিত করে যে 2 ইউনিটের বেগ তাদের ওভারল্যাপ না করে। ওভারল্যাপের বাইরে চলাচলকে সীমাবদ্ধ করার জন্য আমি এখনও অ্যালগরিদমের সাথে টিঙ্কার করছি।