সম্প্রতি আমি একটি দ্রুত গতিযুক্ত 2 ডি শ্যুটারের সাথে কাজ করছি এবং আমি একটি দুর্দান্ত সমস্যাটি পেয়েছি। সংঘর্ষ সনাক্তকরণ। অবশ্যই, এটি কাজ করছে তবে এটি খুব ধীর। আমার লক্ষ্যটি হ'ল: পর্দায় প্রচুর শত্রু থাকুন এবং তাদের একে অপরকে স্পর্শ না করার জন্য করুন। সমস্ত শত্রুরা খেলোয়াড় সত্তা তাড়া করছে। তাদের মধ্যে বেশিরভাগেরই একই গতি থাকে খুব তাড়াতাড়ি বা পরে তারা সবাই খেলোয়াড়কে তাড়া করার সময় একই স্থান গ্রহণ করে। এটি খেলোয়াড়ের জন্য মজাদার বিষয়টিকে সত্যিই হ্রাস দেয় কারণ দেখে মনে হচ্ছে আপনি কেবল একটি শত্রু দ্বারা তাড়া করা হয়েছে। তাদের একই স্থানটি নিতে প্রতিরোধ করতে আমি একটি সংঘর্ষ সনাক্তকরণ (একটি খুব প্রাথমিক 2 ডি সনাক্তকরণ, কেবলমাত্র আমি যে পদ্ধতিটিই জানি) যুক্ত করেছিলাম is
Enemy class update method
Loop through all enemies (continue; if the loop points at this object)
If enemy object intersects with this object
Push enemy object away from this enemy object
এটি কাজ করে। যতক্ষণ না আমার কাছে কেবলমাত্র 200 শত্রু সত্তা রয়েছে। আমি যখন 300-350 শত্রু সংস্থাগুলির কাছাকাছি পৌঁছে যাই তখন আমার ফ্রেমের হার খুব কমতে শুরু করে। প্রথমে আমি ভেবেছিলাম এটি খারাপ উপস্থাপনা ছিল তাই আমি তাদের ড্র কলটি সরিয়েছি। এটি মোটেও সহায়তা করেনি অবশ্যই আমি বুঝতে পারি এটি আপডেট পদ্ধতি update তাদের আপডেট পদ্ধতির একমাত্র ভারী অংশটি হ'ল এটি প্রতিটি শত্রু-লুপ-থ্রু-প্রতি-শত্রু অংশ। আমি যখন 300 শত্রুদের কাছাকাছি পৌঁছে যাই গেমটি 90000 (300x300) পদক্ষেপের পরিবর্তন করে। আমার আমার ~
আমি নিশ্চিত এই সংঘর্ষ শনাক্তকরণকে শনাক্ত করার জন্য আরও একটি উপায় থাকতে হবে। যদিও আমি জানি না কিভাবে। যে পৃষ্ঠাগুলি আমি খুঁজে পাই সেগুলি কীভাবে দুটি বস্তুর মধ্যে সংঘর্ষটি করতে হয় বা কীভাবে কোনও বস্তুর এবং টাইলের মধ্যে সংঘর্ষ পরীক্ষা করা যায় about আমি ইতিমধ্যে এই দুটি জিনিস জানি।
TL; ড? সত্তার প্রচুর সংস্থার মধ্যে সংঘর্ষ সনাক্তকরণকে আমি কীভাবে অগ্রাহ্য করব?
দ্রুত সম্পাদনা: যদি এটি কোনও সহায়তার জন্য হয় তবে আমি সি # এক্সএনএ ব্যবহার করছি।