Saya memiliki objek statis dan objek bergerak. Tabrakan dideteksi menggunakan teorema sumbu-pisah.
Misalnya, dalam situasi ini saya memiliki dua objek statis (merah):
dan objek bergerak antara keduanya:
Algoritme saya dapat menghitung tumbukan antara dua objek ini, dan juga memuntahkan vektor resolusi sempurna (berarti vektor perpindahan minimum) ke tumbukan.
Jadi misalnya, ketika saya memeriksa tabrakan antara persegi panjang hijau dan persegi panjang merah kanan, algoritma meludahkan vektor yang memberitahu saya bagaimana saya perlu memindahkan persegi panjang hijau untuk menyelesaikan tabrakan:
Perhatikan bahwa saya hanya dengan cepat menggambar ini di MSPaint, jadi dalam gambar itu sebenarnya bisa jadi vektor terjemahan minimum mendorong persegi panjang hijau di atas, tapi saya akan menganggap di sini bahwa mendorongnya ke kiri / benar sebenarnya lebih pendek.
Cara umum untuk mendekati ini adalah dengan hanya menyelesaikan tabrakan satu tabrakan per frame, bukan sekaligus. Tetapi dalam kasus saya, ini akan menghasilkan flip-flopping:
Pertama, pemecah mendeteksi dua tabrakan tetapi hanya menyelesaikan tabrakan antara persegi panjang kanan dan persegi panjang hijau:
Kemudian, dalam bingkai berikutnya, ia mendeteksi hanya satu tabrakan yang berada di antara persegi panjang merah kiri dan persegi panjang hijau, dan menyelesaikannya:
Seperti yang Anda lihat, ini sebenarnya tidak menyelesaikan tabrakan (misalnya dengan mendorong persegi panjang hijau ke atas), dan sebagai gantinya hanya membalik jepit di antara kedua negara secara tak terbatas.
Bagaimana saya bisa memecahkan masalah ini?