Ho oggetti statici e oggetti mobili. Le collisioni vengono rilevate usando il teorema dell'asse di separazione.
Ad esempio, in questa situazione ho due oggetti statici (in rosso):
e un oggetto mobile tra i due:
Il mio algoritmo è in grado di calcolare la collisione tra due di questi oggetti e sputa anche un vettore di risoluzione perfetta (che significa un vettore a spostamento minimo) alla collisione.
Quindi, ad esempio, quando controllo la collisione tra il rettangolo verde e il rettangolo rosso destro, l'algoritmo sputa un vettore che mi dice come devo spostare il rettangolo verde per risolvere la collisione:
Notate che ho appena disegnato questo in MSPaint, quindi in quella foto potrebbe essere che il vettore di traduzione minima spinga il rettangolo verde in alto, ma suppongo che spingendolo fuori a sinistra / il diritto è in realtà più breve.
Il modo generale di affrontare questo problema sarebbe risolvere solo la collisione di una collisione per fotogramma, anziché contemporaneamente. Ma nel mio caso, ciò comporterebbe il Flip-flop:
Innanzitutto, il solutore rileva due collisioni ma risolve solo la collisione tra il rettangolo destro e il rettangolo verde:
Quindi, nel fotogramma successivo, rileva solo una collisione tra il rettangolo rosso sinistro e il rettangolo verde e lo risolve:
Come puoi vedere, questo in realtà non risolve la collisione (ad esempio spingendo il rettangolo verde verso l'alto), e invece semplicemente infradito tra i due stati all'infinito.
Come posso risolvere questo?