2009-11-22 45 views
6

Estoy trabajando en un juego donde mi personaje necesita poder tener diferentes armas. Por eso, creo que de alguna manera superponer el arma sobre el objeto en movimiento sería la elección correcta, pero no estoy seguro de cómo podría hacerlo.¿Superponer 2d sprite de arma sobre sprite de personaje?

Asumiendo mi spritesheet personaje se parece a esto:

Player SpriteSheet http://i47.tinypic.com/2qxw9ds.jpg

Y mi arma spritesheet preliminar (no han decidido sobre un cuadrado de tamaño fijo para el arma todavía), tiene el siguiente aspecto:

Weapon SpriteSheet http://i47.tinypic.com/vgltfs.jpg

¿Cómo harías la superposición para colocar el arma correctamente sobre la mano del personaje para cada uno de sus marcos? Sé que una forma sería solo tener un arma del mismo tamaño que los personajes de mi personaje, y superponerlos también, pero creo que si el juego tiene demasiadas armas (digamos 15 tipos diferentes de una sola mano) esto podría volverse loco (tener una hoja de sprite de arma del mismo tamaño que la hoja de sprite de personaje para cada tipo de arma)

¿Tienen algún consejo sobre cómo implementar esto? (apoya la superposición de los sprites del arma sobre los sprites del personaje)

¡Gracias!

Respuesta

9

Puntos de anclaje. Define puntos de anclaje para gráficos de armas en cada fotograma de los gráficos de tu jugador sprite. Luego, define los puntos de anclaje en los sprites de tu arma que coincidan con los puntos de anclaje del arma en tu sprite de jugador. Asegúrese de que los marcos de animación estén sincronizados entre los sprites del jugador/arma.

+2

me gusta notar que esto es básicamente de la misma manera que lo hacemos en 3D :) Los huesos con nombre se pueden unir y mover a través de la animación. –

5

cuando hice eso para un juego de disparos plataforma, teníamos puntos de anclaje (ver explicación leeor_net), Y

Mi técnica consistía en hacer los sprites de una manera que podría girar o utilizar marcos que roatated alrededor el único punto de anclaje, en el caso del arma, y ​​el brazo del personaje se movieron en un arco con un radio conocido. El resultado es que podríamos pedirle al arma que esté en la posición (radio cos (ángulo) *, radio sen (ángulo) *); siendo el ángulo uno de los posibles ángulos que tenemos la animación (como, 0, para adelante, 90 para arriba, y 45 para diagonal hacia adelante ... si solo tuviéramos estas 3 posiciones). y "radio" es el radio en píxeles desde el centro del círculo hasta el brazo del personaje.

Esta técnica matemática de posicionamiento, también le permite "compensar" el arma, mediante el uso de puntos de anclaje, o sumar manualmente un valor en el código, etc. Para que pueda "corregir" errores (como alguien editado el arma y la movió accidentalmente 3 píxeles hacia abajo ... puedes simplemente sumar +3 en y o mover su ancla ...).

En mi juego, la intención y el resultado (la técnica funcionó impecablemente), es que el personaje apuntó con la pistola al cursor del mouse, por lo que pude disparar en cualquier lugar de la pantalla. Para dar una animación suave, teníamos un fotograma cada 10 grados (por lo tanto, 36 fotogramas). Si su juego es pixel art en su lugar, use ángulos que den menos líneas dentadas (como 45, más o menos 22.5, 90, 0 ...), puede tener hasta 16 direcciones cuando desee los ángulos de "líneas menos irregulares" . (Consulte un tutorial de pixel art para ver el motivo, pero básicamente hace que la línea tenga una relación ax/y que sea un entero, lo que permite el espaciado de píxeles regular sin anti-alias para representarlo ...)

Cuestiones relacionadas