Bueno, básicamente lo que hice fue usar funciones trigonométricas para recrear el recuadro correspondiente a un diente de engranaje. Así calculé 4 puntos de los cuales uní con lineas para verificar de qué lado golpea al player. Cada collision_line corresponde a una cara exterior.
Luego simplemente hice que al chocar se calculara el centro de dicho diente de engranaje y lo moví en la dirección contraria.
El ejemplo adjunto está incompleto, solo funciona para el que esta coloreado en verde. Solo faltaría agregar las verificaciones para los otros 2 lados exteriores y mejorar un poco la colision, puesto que el objeto con el que colisiona sale disparado en vez de ser movido de acuerdo a la velocidad del engranaje. Pero eso supongo que se puede solucionar.
Suerte! :)
Luego simplemente hice que al chocar se calculara el centro de dicho diente de engranaje y lo moví en la dirección contraria.
El ejemplo adjunto está incompleto, solo funciona para el que esta coloreado en verde. Solo faltaría agregar las verificaciones para los otros 2 lados exteriores y mejorar un poco la colision, puesto que el objeto con el que colisiona sale disparado en vez de ser movido de acuerdo a la velocidad del engranaje. Pero eso supongo que se puede solucionar.
Suerte! :)