EDITAR:
Consulte la respuesta de @ Bluescrn a esta pregunta; él desarrolla las debilidades en la reproducción de controles en lugar de vectores de movimiento o posición.
-
Estás en el camino correcto. Aquí está el enfoque que usaría:
Controladores
Crea una clase de controlador que reciba la entrada del teclado y la pase a tu personaje. Sin embargo, también tenga un registro del Controlador exactamente cuando se presionaron las teclas significativas (por ejemplo, flechas, salto, etc.) y cuando se soltaron. Almacenaría este tipo de información:
actions[0].milliseconds = 400 actions[0].action = right pressed
actions[1].milliseconds = 1000 actions[1].action = jump pressed
actions[2].milliseconds = 1300 actions[2].action = jump released
actions[3].milliseconds = 2500 actions[3].action = jump pressed
actions[4].milliseconds = 3000 actions[4].action = jump released
actions[5].milliseconds = 5330 actions[5].action = right released
Un controlador tiene dos modos:
- Grabar: recibe la entrada del teclado. Registros de entrada en la lista. Da la entrada de caracteres según el estado del teclado.
- Reproducción: Ignora la entrada del teclado. Avanza a través de la lista según los milisegundos transcurridos desde que comenzó el nivel. Da la entrada de caracteres según el estado del teclado grabado en el momento actual.
Caracteres
Cuando se construye su objeto Character, crea un nuevo Controller para sí mismo. El personaje puede estar en uno de dos modos en cualquier momento:
- Activo: solo hay un personaje activo y es el que controlas. Cuando el personaje está en modo activo, su controlador está en modo de grabación. Por defecto, cuando se construye un personaje, está en modo activo.
- Fantasma: este es el que reproduce tus acciones pasadas. Cuando un personaje entra en modo Fantasma, cambia su apariencia y establece su Controlador en modo Reproducción.
Niveles
Un nivel recién comenzado
Cuando comiences el nivel, crea un solo personaje. Ahora comienza el nivel y el jugador hace lo suyo.
Cuando el tiempo se restablece
Cuando el nivel se restablece, haz tres cosas:
- Dile al personaje activo actual que entre en modo fantasma.
- Crea un nuevo personaje.
- Llama a todos los personajes para que se reinicien. Esto los colocará de nuevo en la posición inicial sin movimiento, etc. A su vez, les indicarán a sus Controladores que se reinicien a milisegundos 0 sin presionar las teclas.
Entonces comienza el nivel y el jugador hace lo suyo.