Próbuję wdrożyć system kolizji w tworzonej przeze mnie grze 2D. Twierdzenie o osi oddzielającej (opisane w samouczku dotyczącym kolizji metanetu ) wydaje się wydajnym i niezawodnym sposobem obsługi wykrywania kolizji, ale nie podoba mi się metoda odpowiedzi na kolizję, której używają. Algorytm przesuwając się na oś wzdłuż osi najmniejszego zachodzenia na siebie, po prostu ignoruje poprzednią pozycję poruszającego się obiektu, co oznacza, że nie zderza się on z nieruchomym obiektem tak bardzo, jak wchodzi w niego, a następnie się odbija.
Oto przykład sytuacji, w której miałoby to znaczenie:
Zgodnie z opisaną powyżej metodą SAT prostokąt wyskoczyłby z trójkąta prostopadłego do jego przeciwprostokątnej:
Jednak realistycznie prostokąt powinien zatrzymać się w prawym dolnym rogu trójkąta, ponieważ byłby to punkt pierwszego zderzenia, gdyby poruszał się w sposób ciągły wzdłuż wektora przemieszczenia:
Teraz może to nie mieć znaczenia podczas gry, ale chciałbym wiedzieć, czy istnieje sposób na skuteczne i generalne uzyskanie dokładnych przemieszczeń w ten sposób. Przez ostatnie kilka dni zastanawiałem się nad tym i nie chcę się jeszcze poddawać!
(Przesłane z StackOverflow, mam nadzieję, że nie jest to niezgodne z regułami!)