Estoy trabajando en un juego en el que controlas un trebuchet para lanzarle bolas al oponente.
Es como un juego llamado 'Asedio medieval'. Cuando el trebuchet balancea su brazo, el jugador debe aprovechar el mejor momento para presionar el botón y soltar la pelota. Entonces la pelota volará en el ángulo tangente. Mi problema ahora es que el brazo del trebuchet se balancea demasiado rápido para que el jugador aproveche el momento correcto. Mientras tanto, tiene que ser así de rápido, de lo contrario no puede lanzar lo suficientemente lejos. Y hay una pequeña cuerda que conecta la bola y el brazo de trebuchet, si el brazo se balancea demasiado lento, la bola simplemente cuelga de la cuerda cuando el brazo se mueve.
Resuelvo el problema alternando el tamaño del paso, cada vez que el brazo se balancea, cambio el tamaño del paso de 1/60 a 1/200. Y una vez que el jugador suelta la pelota, vuelve a 1/60.
Esto funciona bastante bien, excepto que mi juego es para multijugador con redes. Por lo tanto, cambiar el paso puede causar problemas.
Otra solución que se me ocurre es permitir que oscile lentamente, pero cuando el jugador suelta la pelota, agrego velocidad manualmente a la pelota mientras mantengo su dirección. Realmente no me gusta esta solución porque parece falsa y todavía tengo el problema de que la pelota está colgando de la cuerda, a menos que la haga muy corta.
Por favor, arroja algo de luz sobre esto, ¡gracias!
EDITAR
Gracias por el aporte de todos, resuelvo el problema haciendo que el brazo se balancee lentamente y cuando el jugador suelta la pelota, agarra la velocidad de la pelota y multiplicada por dos. Se ve exactamente igual que cambiar el tamaño del paso. Solo hay una cosa extra que necesito hacer. Debido a que el brazo oscila muy lentamente, la pelota simplemente cuelga del extremo del brazo en lugar de balancearse. Resolví esto aplicando una fuerza igual a la fuerza gravitacional sobre la pelota durante y solo durante el período de swing. Entonces ya no cuelga allí, sino que se balancea con el brazo.
La respuesta de @MrCranky es detallada y parece factible, así que la aceptaría. :)