PFM: Diseño y creación de personaje protagonista (parte 3 – Animaciones y armas)

Y por fin llegamos a la tercera parte del diseño y creación del personaje principal. (Parte 1 y parte 2). En esta última parte mostraré cómo se han configurado las animaciones del personaje y cómo se han creado 2 de las armas que portará el mismo.

Animaciones

Como ya se ha visto en otras ocasiones, para poder crear las animaciones del modelo primero hay que crear un esqueleto y aplicarle el skinning para que cuando se mueva el esqueleto el modelo siga el movimiento.
Gabriel15

En otros modelos anteriores que estaban formados por piezas individuales no fue necesario, pero al ser el cuerpo del personaje una única malla, hubo que ajustar las áreas de influencia de cada hueso para que las articulaciones se doblaran con naturalidad.

Gabriel16

Gabriel17Una vez ajustado el esqueleto se crearon diversas animaciones. Algunas de ellas:

Y como ya hemos visto con Pepe Dummy, las animaciones se aplican en UDK mediante un AnimTree, que en este caso es algo más complejo:
animTreeAlgunos comentarios/explicaciones sobre el AnimTree:

  • De nuevo se usa el nodo WeaponType (AnimNodeBlendByProperty) para escoger entre los diferentes caminos de animación dependiendo del arma que esté sosteniendo el Pawn en cada momento.
  • El AimNode tiene 2 perfiles diferentes, uno para cada tipo de arma. En el código se puede escoger el perfil con PFMAimNode.SetActiveProfileByIndex(0);
  • Los diferentes nodos BlendPerBone se usan para mezclar las diferentes animaciones con las distintas posiciones (correr y apuntar, etc).

“Armas… muchas armas”

La creación de las armas del personaje ha sido una parte laboriosa, pues dichas armas están supuestamente ocultas en el interior de los brazos del protagonista, desplegándose cuando se equipan. Para hacer este efecto posible, en primer lugar separé los brazos del cuerpo, haciendo que fueran un modelo diferente. Luego los seccioné en distintas partes, permitiendo así hacer una animación de apertura como se verá en los videos más abajo. Para permitir esta apertura necesité usar un esqueleto un poco más complicado:

Gabriel22

Espada

La espada del personaje por ejemplo, consiste en una hoja que va plegada en el interior del brazo y que se despliega con una animación al activarse:

El esqueleto necesario para esta animación (AKA infierno):

g02

Para ejecutar estas animaciones al equipar o guardar el arma, basta con sobreescribir la función TimeWeaponEquipping y TimeWeaponPutDown, añadiendo una llamada a la función PlayWeaponAnimation() de Weapon:


simulated function TimeWeaponEquipping()
{
    // Animación de apertura
    if(AnimationEquip != '')
    {
        Super.PlayWeaponAnimation(AnimationEquip,EquipTime);
    }
    super.TimeWeaponEquipping();
}

siendo AnimationEquip el nombre de la animación a ejecutar y EquipTime el tiempo total que queremos que dure dicha animación.

Por lo demás, la programación es prácticamente idéntica a cuando se creó en el tutorial de combate cuerpo a cuerpo.

Ametralladora

De forma similar, la ametralladora también tiene animaciones de despliegue y repliegue:

Y un esqueleto igual de lioso para permitir estas animaciones:

g01El sistema consiste en tener diferentes modelos de brazos (uno para cada arma y otro sólido, sin arma) y cambiarlo mediante código según convenga.

Y ya, por FIN, el personaje está totalmente modelado, texturizado, animado, armado y listo para patear traseros metálicos:


Banner Blog

Anuncios

17 pensamientos en “PFM: Diseño y creación de personaje protagonista (parte 3 – Animaciones y armas)

  1. ¿Qué te falta por hacer? Ya lo tienes todo prácticamente, sólo te falta unir el player con el mapa y los enemigos.
    ¿Seguirás poniendo cosas tras terminar este proyecto?

    • Pues sí, estoy ya puliendo algunos niveles y añadiendo detalles, música, sonidos, mejorando cosas.. pero lo gordo de la programación ya lo terminé, por eso ultimamente no he hecho nuevos tutoriales. Quizá cuando acabe el proyecto y tenga más tiempo haga algún tutorial más de unrealscript, ya veremos xD

  2. Olle Marco, una pregunta…? Que programa usas para crear al personaje y sus animaciones. Es por si podrías hacer un tutorial, si lo hay dime donde que no lo he visto.
    Deseando que llegue tu juego… ;D

    • Hola. Para modelar y animar he utilizado 3ds max. En internet hay miles y miles de tutoriales mucho más completos que lo que yo podría hacer 😀 La pega es que 3ds max no es gratuito. Una alternativa gratuita es Blender, del cual también existen muchísimos tutoriales.

  3. Me han gustado muchos tus tutoriales, he aprendido mucho de UDK e incluso estoy seguro que con la base aquí explicada ya se puede profundizar para hacer un juegazo. De todo lo que vi, sólo tengo un comentario cuando explicabas el manejo de la cámara. Creo que hubiera sido mejor que cuando el pawn se moviera de lado, girara alrededor de la cámara. Es una opinión de un jugón que le gusta los juegos en tercera persona. Te pongo el ejemplo de legend of zelda, cuando pulsas izquierda o derecha gira alrededor de la cámara. Aunque eso no quiere decir que sea un estándar, pero es lo más habitual.

    Enhorabuena estas haciendo una gran contribución para las personas que estamos comenzando, es un gran material.

    Saludos.

    • Hola CodeWarrior. Me alegro que te hayan sido útiles los tutoriales. Y lo de la cámara, bueno, es cuestión de preferencia y acostumbrarse. Yo por ejemplo prefiero que no gire alrededor de la cámara sino que se mueva recto hacia el lado, pues es más fácil apuntar y girar alrededor de un enemigo

  4. ¿Para el tema de las balas y los cargadores hay alguna ventaja en usar AmmoCount y MaxAmmoCount?

    Creo que son variables usadas más bien en UT. En UDK sólo he visto una referencia a AmmoCount y parece que lo gestiona independientemente de UT.

    Yo he usado variables propias, que voy descontando en ConsumeAmmo, gestionando los cargadores y demás. La verdad es que es más simple que el mecanismo de un botijo.

    Por cierto, la madre que parío al casting… lo que me ha costado encontrar la forma de obtener la munición desde el HUD:

    TESTWeapon(TESTPawn(PlayerOwner.Pawn).Weapon).municion

    … aunque cuando lo miras es totalmente lógico.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s