আমার 2 ডি পদার্থবিজ্ঞানের ইঞ্জিনে, আমি এএবিবি বনাম এএবিবি সংঘর্ষগুলি সনাক্ত করতে পারি এবং সংক্ষিপ্ততম অনুপ্রবেশ ভেক্টর সন্ধান করে এবং এএবিবির অবস্থানটিতে যুক্ত করে এগুলি সমাধান করতে পারি।
এটি করে দ্বিতীয় এএবিবির বাইরে প্রথম এএবিবিকে "ধাক্কা" দেয় তবে বেগ / ত্বরণের পরিবর্তনগুলি একেবারেই মোকাবেলা করে না।
যদি আমি আমার সিমুলেশনে মাধ্যাকর্ষণ ত্বরণ যোগ করি তবে প্রথম গতিশীল এএবিবি-র বেগটি দ্বিতীয় স্ট্যাটিক এএবিবি-র শীর্ষে স্থির থাকা অবস্থায়ও বাড়তে থাকে। অবশেষে, বেগটি খুব বড় হয়ে উঠবে এবং সংঘর্ষটি সনাক্ত করা যাবেনা (গতিশীল এএবিবি স্থির একের মধ্যে দিয়ে যাবে)।
আমি রেজোলিউশনের পরে বেগটি শূন্যে সেট করার চেষ্টা করেছি, তবে এটি অবশ্যই কার্যকরভাবে কার্যকর হয়নি এবং অবাস্তব অনুকরণ তৈরি করেছে।
আমি অনলাইনে পড়েছি যে পজিশনে বা গতিবেগে ম্যানুয়ালি কাজ করে সংঘর্ষগুলির সমাধান করা সঠিক নয়। আমি বাহিনী বাস্তবায়নের চেষ্টা করেছি (ভর আপাতত "হার্ডকডযুক্ত 1"):
void Body::applyForce(sf::Vector2f mForce) { acceleration += mForce; }
void Body::integrate(float mFrameTime)
{
velocity += acceleration * mFrameTime;
position += velocity * mFrameTime;
acceleration = {0, 0};
}
সংঘর্ষের রেজোলিউশনের সময় যদি আমি স্বল্পতম অনুপ্রবেশ ভেক্টরটিকে বল হিসাবে প্রয়োগ করি তবে গতিশীল এএবিবি স্থিতিশীল থেকে একটি "ধাক্কা মেরে" পেয়ে যাবে তবে এর গতিবেগ মহাকর্ষ ব্যতীত কোনও অনুকরণে হ্রাস পাবে না এবং এটি চিরতরে চলতে থাকবে moving
"অস্থায়ী" বল প্রয়োগ করার কোনও উপায় আছে কি? একটি বাহিনী যা প্রথম এএবিবিটিকে দ্বিতীয় এএবিবি থেকে বের করে দেওয়ার বিষয়ে আলোচনা করে, তখন যখন এএবিবি আর সংঘর্ষ না করে তখন থামবে?
এখানে সম্পূর্ণ উত্স কোড উপলভ্য: https://github.com/SuperV1234/SSVSCollision