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