gamerevar / proyecto-comunitario-1-gd

Proyecto comunitario #1 (Godot)
MIT License
6 stars 1 forks source link

Controlador de Animación para el personaje [Tarea] #72

Closed azagaya closed 3 years ago

azagaya commented 3 years ago

Descripción del feature Los personajes y enemigos tendrán las animaciones en distintos ángulos, ya que el juego es isométrico. La idea sería hacer un script que extienda un Sprite y que tenga una función (llamada por ejemplo play_animation) que dado un string que represeta al nombre de la animación, elija la correcta observando la dirección de movimiento actual del personaje. También podría pasarse la dirección como otro parámentro. Esta escena se agregaría luego a la escena del personaje.

Razón del feature Las razones para hacer esta escena separada es, en primer lugar, que alguien pueda ir trabajando en las animaciones y su control mientras otra persona va trabajando en una escena para el controlador de las animaciones, sin que haya conflictos. Para cada personaje que tenga distintas animaciones, se puede crear una escena heredada a partir de esta, y modificar acorde.

Implementación del feature Una escena con un nodo Sprite como root y un AnimationPlayer. Un script con la función descripta anteriormente. Para distintos personajes, si hay que cambiar algo, entonces se hereda esta escena y se hacen las modificaciones. Es importante analizar si esta feature les parece que vale la pena o se hace directamente en cada escena de personaje. Si desde el arte, todos los spritesheet están ordenados de la misma manera, entonces nos puede ahorrar mucho trabajo

azagaya commented 3 years ago

Habría que definir una convención para el nombre de las animaciones. Los ángulos para un juego isométrico son estos

image

Podemos utilizat "-" utilizando el número que se ve en la imagen, o poner sino N S W E NW NE SW SE, también usando de referencia la imagen, en lugar del numero. Por ahora solo tendríamos los ángulos 0 y 2, o N y E, y las 4 y 6 (S y W) se obtienen flipeando el sprite.

Por ejemplo, una animacion podría ser "Running-E" o "Running-2". También podría controlarse el flip del sprite dentro de cada animacion. Asi, si no se crean nuevas animaciones, "Running-W" se obtendría de duplicar "Running-E" y cambiar el fipl del sprite en esa animacion.

LeandroCuello commented 3 years ago

Se podría utilizar un AnimationTree aprovechando el BlendSpace2D? image Primero se tendría que agregar los puntos con la información de que animación tienen que utilizar. Luego mediante código se cambia la propiedad "blend_position" dándole un Vector2D que contenga la información de la dirección a donde se mueve.

En este video (minuto 9:44) se puede ver como funciona.

azagaya commented 3 years ago

Habria que avisarle a quien tomo la tarea. Es buena opcion.

jh62 commented 3 years ago

Habría que definir una convención para el nombre de las animaciones. Los ángulos para un juego isométrico son estos

image

Podemos utilizat "-" utilizando el número que se ve en la imagen, o poner sino N S W E NW NE SW SE, también usando de referencia la imagen, en lugar del numero. Por ahora solo tendríamos los ángulos 0 y 2, o N y E, y las 4 y 6 (S y W) se obtienen flipeando el sprite.

Por ejemplo, una animacion podría ser "Running-E" o "Running-2". También podría controlarse el flip del sprite dentro de cada animacion. Asi, si no se crean nuevas animaciones, "Running-W" se obtendría de duplicar "Running-E" y cambiar el fipl del sprite en esa animacion.

Yo siempre uso N, NE, NW, etc... me parece mas intuitivo. Esta info cuando la tengan decidida hagan un issue para meterla en el GDD como data técnica, porque les va a servir a futuro.

jh62 commented 3 years ago

Hay un plugin para Godot para importar las animaciones del AnimationPlayer al Tree

(aclaro que no lo probe!)

Godot_v3 2 3-stable_win64_lxCKwJ9Ybx

jjmontes commented 3 years ago

Las animaciones definidas son

jjmontes commented 3 years ago

Consulta ¿esto tengo que cerrarlo yo o lo tiene que cerrar algún Lead?

azagaya commented 3 years ago

Creo que si en el PR le ponias que era para este issue se cerraba solo.. lo cierro yo