Tengo una Entity
instancia que se actualiza cada tic del juego. Asumamos que la entidad avanza constantemente. Me gustaría poder dar el ángulo de la entidad a una función que la haga moverse en esa dirección:
moveForward(90);
debería hacer que se muevan hacia la derecha. Si declaro mi rotación como global int
, entonces haciendo
moveForward(rotation);
rotation++;
lo haría trazar un pequeño círculo con su movimiento.
¿Cómo puedo hacer esto? Supongo que esto implica matemática vectorial; No sé ninguno, por lo que una breve explicación sería buena.
fuente
La otra respuesta es incorrecta a partir de ahora, para moverse correctamente a lo largo de un plano basado en una rotación, haga lo siguiente:
Sin embargo, recomendaría hacer una variable para cos / sin que actualice solo cuando cambie la rotación, por lo que no la calculará 4 veces por tic.
La strafeSpeed se movería de lado a lado, la velocidad hacia adelante para avanzar a lo largo de su rotación.
editar: tesselode hace lo mismo excepto que no tiene movimiento de lado a lado.
fuente
Dijiste ticks de actualización, así que supongo que no tienes una velocidad de fotogramas variable. Si es así:
x + = velocidad * math.cos (ángulo)
y + = velocidad * math.sin (ángulo)
Si está utilizando una velocidad de fotogramas variable, también debe multiplicar por tiempo delta.
fuente