• Jueves 2 de Mayo de 2024, 11:17

Autor Tema:  Animacion Sprites  (Leído 3101 veces)

mundoemulado

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Animacion Sprites
« en: Viernes 27 de Agosto de 2004, 13:51 »
0
Ante todo un saludo a toda la comunidad de solocodigo.

estoy comenzando en este apasionante mundo y tengo una duda que espero me podais aclarar.

He visto que hay una forma de animar sprites mediante un solo archivo que contiene todos los graficos del juego, luego se trazan unos rectangulos y mediente el programa vas accediendo a todos los sprites.

Estoy un poco liado asi que si alguien me lo sabe explicar con mas detalle este proceso se lo agradezco de antemano.


Bueno nos leemos ;)


ciaoooo

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Animacion Sprites
« Respuesta #1 en: Viernes 27 de Agosto de 2004, 14:55 »
0
Hola.

Lo que preguntas depende de qué librería gráfica estés usando, o de si lo estás haciendo a mano. ¿Cuál es tu caso?

Un saludo.

Ruben3d

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Animacion Sprites
« Respuesta #2 en: Viernes 27 de Agosto de 2004, 15:56 »
0
El caso es que tienes una imagen con todos los recuadros de animacion de un personaje y estos estan claramente definidos,
asi que cargas la imagen en memoria pero solo dibujas en pantalla el area de la imagen correspondiente a un rectangulo determinado.
de esta manera en un instante de tiempo dibujas el area correspondiente al rectangulo nro 1 y al siguiente instante de tiempo solo dibujas el area correspondiente al erctangulo 2 o a cualquiera segun tus necesidades.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

mundoemulado

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Animacion Sprites
« Respuesta #3 en: Sábado 28 de Agosto de 2004, 02:12 »
0
Muchas gracias a Ruben3d y Juank por contestar tan rapido ;) por lo que he visto en el foro os manejais muy bien en este tema.

En relaccion a la pregunta de Ruben3d estoy trabajando con sdl si me puedes orientar un poco mas con esto de los sprites en sdl de maravilla si no pues gracias por el interes :).

Respecto a Juank como se en que posicion x y esta cada grafico de la animacion¿?

soy un poco torpe con esto de los sprites.

Enga muchas gracias a los dos de nuevo

ciaoooo.

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Animacion Sprites
« Respuesta #4 en: Sábado 28 de Agosto de 2004, 04:10 »
0
La idea básica del archivo con todos los cuadros (frames) de animación es esta:

1. Obtienes VARIOS archivos gráficos (con algún editor) cada uno con un cuadro de animación: caminando, parado, corriendo, etc. Y para cada dirección que sea necesaria: caminando a la derecha, arriba, abajo, etc.

2. Recortas los pedazos que no se usan en cada gráfico, las partes "transparentes", de forma que quede un rectángulo conteniendo el sprite.

3. Realizas un "collage" de estos gráficos de la mejor manera que puedas para evitar desperdiciar espacio. Es más práctico una collage por dirección del sprite (secuencia de caminando a la derecha, secuencia de caminando hacia arriba, etc).

4. Guardas en un archivo las coordenadas de los rectángulos que corresponden con cada "cuadro", esto tendrías que hacerlo para cada cuadro a medida que lo colocas en el collage. TU TIENES QUE SABER las posiciones x, y, por que tu armas el collage.

5. En tiempo de ejecución cargas en memoria los gráficos de los "collage" (secuencias de frames) y al momento de pintarlos en pantalla indicas el rectánculo origen correspondiente para cada cuadro (frame) de acuerdo a la acción, dirección y secuencia de animación del sprite.

¿Complicado?
Sin duda, es complicado. Puedes facilitarte las cosas si las dimensiones de los rectángulos siempre tienen el mismo ancho y alto, pero desperdiciarás memoria en cantidad.

¿Existen programas gratuitos que ya hacen esto?
Si, DelphiX tiene varias herramientas (gratuitas) para realizar esto y muchas otras cosas necesarias para programar juegos. Por supuesto que no es un hada madrina que hará el trabajo por ti, pero ayudará bastante.

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Animacion Sprites
« Respuesta #5 en: Sábado 28 de Agosto de 2004, 15:04 »
0
Hola.

Creo que Amilius lo ha dicho todo. La manera más simple es con todos los cuadros del mismo tamaño. Para evitar la pérdida de espacio por las zonas que no se usen puedes guardarlo en TGA con compresión RLE, o en PNG (aunque es más fácil abrir un PNG).

Un saludo.

Ruben3d

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Animacion Sprites
« Respuesta #6 en: Sábado 28 de Agosto de 2004, 16:08 »
0
Citar
Hola.

Creo que Amilius lo ha dicho todo. La manera más simple es con todos los cuadros del mismo tamaño.
igual.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

mundoemulado

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Animacion Sprites
« Respuesta #7 en: Domingo 29 de Agosto de 2004, 13:03 »
0
Gracias a todos , se nota que teneis un gran conocimiento sobre el tema,  me ha ayudado mucho.
 ahora tengo la idea mucho mas clara ;)

Ya si no es mucho pedir si sabeis algun enlace que trate sobre los archivos de sprites pues os lo agradezco , he buscado por google pero no he encontrado mucha información

Bueno seguir asi que sois muy majos.

un saludo.

villarreal

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Animacion Sprites
« Respuesta #8 en: Martes 14 de Septiembre de 2004, 06:19 »
0
Hola gente soy nuevo en el foro:

y tengo un problemilla con la animacion de sprites , estoy trabajando con directx 7
con la funcion blt() ................... como lei en este foro utilizo un solo archivo .bmp que contiene todas los cuadritos de la animacion, cuando espicho la tecla una vez ,la suelto , la espicho 1 vez, la suelto y asi sucesivamente, funciona la animacion perfectamente y se ve muy bien...... pero cuando dejo la tecla presionada la animacion se ve muy mal y las imagenes se sobreponen rapidamente ...perdiendose el efecto de animacion.......

Ya probe bajando la velocidad de movimiento del frame y no sirvio.......agradezco si alguien sabe como arreglar esto..........saludos desde Bogota Colombia

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Animacion Sprites
« Respuesta #9 en: Martes 14 de Septiembre de 2004, 08:37 »
0
Necesitas algo de código que funcione como TEMPORIZADOR "Timer" para sincronizar la animación, que la variable que indica que frame mostrar en pantalla se modifique en intervalos de tiempo controlados por tu programa y no por la velocidad de la máquina o  eventos externos como teclas presionadas. Puedes usar o bien un timer o controlarlo todo desde un "bucle maestro" que pregunte a cada momento ¿ya es tiempo de un "tick"?

Es importante saber en que estas programando el juego, si te llaman cuando un evento sucede (una tecla fue presionada), o si tu tienes que pedir el estado de, por ejemplo, el teclado ¿Se ha presionado una tecla?

Si utilizas delphi te puedo pasar un poco de código para un buen timer (suponiendo que programas la interfaz orientada a eventos).