Cuando el personaje se mueve a un sitio normalmente, avanza a 0.5 pixeles por frame. Se supone que 1 frame en mi caso son 1/120 segundos, pero no importa, imaginen que fuese 0.5 pixeles por segundo.
Pero si algo lo empujó, la velocidad conque avanza puede ser mayor.
Se debe ir reduciendo, quisiera que me den ideas de cómo.
Yo puse (esto es para cuando fue empujado):
Si el personaje intenta ir a la dirección contraria, o sea, si por ejemplo lo empujaron a la derecha y él intenta ir a la izquierda, la velocidad conque se mueve a la derecha será reducida 0.5 por frame mientras siga intentando ir a la dirección contraria.
Si nada hace, la velocidad se irá reduciendo 0.01 por frame.
Si va hacia la misma dirección, no tengo mucha idea de qué poner, entiendo que la reducción debe ser menor a 0.01, pero no quiero poner un valor cualquiera, quiero que sea acorde a la velocidad natural del personaje. Se me ocurre que podría ser una división pero a la vez pienso que no sirve, por ejemplo:
VelocidadActual = (VelocidadActual+VelocidadNatural)/2
Eso puede causar que la velocidad actual pase a ser la natural mucho más rápido que restándole 0.01 ¿no? Como si por caminar hacia el mismo lado que fue empujado frenara más rápido que quedándose quieto, eso no puede ser.