• Domingo 17 de Noviembre de 2024, 15:22

Autor Tema:  Como Controlo La Velocidad De Animacion?  (Leído 1765 veces)

ibito

  • Miembro HIPER activo
  • ****
  • Mensajes: 549
  • Nacionalidad: mx
  • Se mas de C++ que lo que se de ese CSS
    • Ver Perfil
    • http://www.ibquezada.com
Como Controlo La Velocidad De Animacion?
« en: Viernes 31 de Diciembre de 2004, 17:30 »
0
Como le hago para controlar la animacion de un sprite ? lo que pasa es que los sprites se ven demasiado rapido (la animacion), entonces una vez lo que hice fue hacer una funcion playAnimation(animation, time) y lo que hacia era dividir los fps que tenia entre time ( o algo asi la verdad ya no receuerdo), y se veia con ese tiempo pero me dijeron queno era buena idea hacerlo asi  :P


Que manera utilizan ustedes?


de antemano gracias por la respuesta
______________________________________
www.hazjuegos.com Una comunidad dedicada al desarrollo de videojuegos.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Como Controlo La Velocidad De Animacion?
« Respuesta #1 en: Viernes 31 de Diciembre de 2004, 19:23 »
0
Citar
Que manera utilizan ustedes?
La velocidad de animacíon se controla en toda la escena y no por separado.

<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->

procedimiento  CicloJuego;
variables
TiepoComienzo: Longint; //indicará cuando comenzo la escena
comenzar
 mientras GameRunning hacer
 comenzar
   {se graba el tiempo de comienzo}
   TiempoComienzo = ObtenerTiempoActual;
   {Obtener el estado de las entradas}
   LeerTeclado;
   {realizar los pasos de la inteligencia artificial}
   RealizarInteligenciaArtificial;
   {Actualizar posicion Sprites}
   ActualizarPosicionSprite;
   {Testear Collision}
   CheckearColision;
   {Realizar los sonidos}
   TocarSonidos;
   {Realizar la musica}
   TocarMusica;
   {Finalmente Volcar todo a pantall}
   VolcarPantalla;
   {Determina si el ciclo del juego debe continuar}
   GameRunning = IsGameOver;
   {Esta es la parte que verifica cuanto tiempo paso despues
   del comienzo de la escena, si es menor al debido, la animacion será
   demasiado rapida por lo que hay que detener todo hasta que el tiempo sea
   el adecuado y concida con los FPS buscados}

   si ObtenerTiempoActual-TiempoComienzo < TiempoDeseado(FPS) entonces
   RetenerJuegoHasta(ObtenerTiempoActual-TiempoComienzo);
 fin mientras;
fin procedimiento

{nuestro sprite es así:}
Sprite : objeto
 Imagen: Array[0..5] of Imagen; //son las imagenes del sprite
 AnimCount: integer; // el frame de la  animacion actual
 Frames: integer = 5;
 metodo Dibujar(Donde: PantallaVirtual); //algun procedimiento que dibuja es sprite
fin conjunto

{el procedimieto de UpdateSprite seria asi, tomando en cuent}
procedimiento ActualizarPosicionSprite;
comenzar
 Sprite.Imagen[AnimCount].Dibujar(Buffer);
 Animcount = AnimCount + 1;
 si AnimCount = Frames  entonces AnimCount = 0;
fin procedimiento

 <!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Como observas en el pseudo, Ni importa los FPS del sprite, sino los de la escena, me refiero a que la animacion debe ser controlada respecto a todo lo visible en la pantallay no por cada cosa que se ve.

Espero no  ser confuso :lightsabre:

Citar
me dijeron queno era buena idea hacerlo asi
De tu forma, Creas multiples animaciones en la pantalla y controlas su velocidad por separado lo que te complica las cosas.
Segun el pseudo anterior, Debes controlar la pantalla como una única animacion.

ibito

  • Miembro HIPER activo
  • ****
  • Mensajes: 549
  • Nacionalidad: mx
  • Se mas de C++ que lo que se de ese CSS
    • Ver Perfil
    • http://www.ibquezada.com
Re: Como Controlo La Velocidad De Animacion?
« Respuesta #2 en: Domingo 2 de Enero de 2005, 20:03 »
0
muchas gracias por la respuesta, creo haber entendido :D
______________________________________
www.hazjuegos.com Una comunidad dedicada al desarrollo de videojuegos.

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Como Controlo La Velocidad De Animacion?
« Respuesta #3 en: Jueves 13 de Enero de 2005, 19:18 »
0
Personalmente, prefiero establecer una velocidad en cuadros por segundo independiente para cada uno de los sprites que tenga, para así tener mayor control. Si entras aqui:
io3d/src
puedes ver la implementación que tengo de los sprites animados. En concreto, fijate en los archivos
io3d/src/textures.h
io3d/src/textures.cpp

Puedes ver el método CTexture::getImage(), que retorna el cuadro que corresponda según su velocidad. Este uso te permite simplificar mucho el código del programa que lo maneja.

Un saludo.

Ruben3d