Autor Tema: ayuda en la previsualizacion del sprite animado  (Leído 393 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Mental.Gif

ayuda en la previsualizacion del sprite animado
« en: Enero 12, 2018, 12:33:08 am »
Hola, tengo un problema a la hora de darle movimiento al personaje, se mueve a 300% de velocidad cuando camina!!
segui paso a paso el tutorial del youtuber Shaun Spalding (https://www.youtube.com/watch?v=Y6l02DcpSR4) esta bastante bien, pero estoy casi convencido que el problema no reside en el codigo.

porque absurdamente, al hacer un video screenshot del programa (uso gamemaker studio 2): https://youtu.be/_nLo1B7pAAM
el personaje se mueve correctamente, y en el previsualizador del programa de game maker, es decir, cuando le doy a "play" el sprite se mueve a 300%, camina normal pero el sprite se mueve en modo hyperactivo total.
quizas sea algo del render de mi ordenador.... o de las opciones de preferencias del programa, alguien me podria sacar de dudas sobre este enigma?
« última modificación: Enero 12, 2018, 12:52:48 am por Mental.Gif »


 
No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado cristopher2545

Re:ayuda en la previsualizacion del sprite animado
« Respuesta #1 en: Enero 12, 2018, 02:14:58 am »
image_speed=2 creo que es un poco alto para que se mueva lento podrias usar en su lugar numeros en decimal entre mas alto el decimal mas lento o estable se movera prueba por ejemplo

image_speed=0.25 eso talvez lo haga moverse lento, reemplaza todos los 2 que tengas en este codigo por el 0.25
« última modificación: Enero 12, 2018, 02:16:39 am por cristopher2545 »
Programame! como a una de tus árcades chinas

GET BEHIND ME DOCTOR!
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado Mental.Gif

Re:ayuda en la previsualizacion del sprite animado
« Respuesta #2 en: Enero 12, 2018, 06:59:22 am »
pues no, sigue moviendose igual..
puse el texto en negrita donde esta la parte donde falla el codigo:

Citar
//get the player's input
key_right = keyboard_check(vk_right);
key_left = keyboard_check(vk_left);
key_jump = keyboard_check_pressed(vk_space);

//calculate movement
var move = key_right - key_left;
hsp = move * walksp;
vsp = vsp + grv;

if (place_meeting(x,y+1,objeto_Block)) && (key_jump)
{
   vsp = -7;
}

//horizontal collision
if (place_meeting(x+hsp,y,objeto_Block))
{
   while (!place_meeting(x+sign(hsp),y,objeto_Block))
   {
      x = x + sign(hsp);
   }
   hsp = 0;
}
x = x + hsp;



//Vertical collicion

if (place_meeting(x,y+vsp,objeto_Block))
{
   while (!place_meeting(x,y+sign(vsp),objeto_Block))
   {
      y = y + sign(vsp);
   }
   vsp = 0;
}

y = y + vsp;




//Animation
if (!place_meeting(x,y+1,objeto_Block))
{
   sprite_index = Sprite_Prota_Quiet;
   image_speed = 2.5;
   if (sign(vsp) > 0) image_index =1; else image_index = 0;
}
else
{
   image_speed = 2.5;
   if (hsp == 0)
   {
      sprite_index = Sprite_Prota_Quiet;
      
   }
   else
   
   {
      
      sprite_index = Spr_Prota_run;
      
   }
}

if (hsp != 0) image_xscale = sign(hsp);


con 2.5 sigue moviendose igual, sospecho que falta añadir un image_speed en algun sitio...

debo decir tambien que el sprite de la animacion con el que segui el tutorial del youtuber es mucho mas pequeño comparando  con las dimensiones que uso yo: 188 x 400.
el videotutorial usaba tambien 4 o 5 frames de animacion del personaje corriendo, y yo uso 14 frames:



muchas gracias!!
« última modificación: Enero 12, 2018, 07:16:26 am por Mental.Gif »
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo

Desconectado MateG_

Re:ayuda en la previsualizacion del sprite animado
« Respuesta #3 en: Enero 12, 2018, 05:59:05 pm »
Buenas, 2.5 de image_speed es más alto que el 2 que pusiste antes. El problema es mientras más grande sea el número de la image_speed más rápido pasarán los fotogramas de la animación, ya que lo que hace la variable es ver cuantos fotogramas se deben pasar en un segundo multiplicandose por la velocidad de la habitación, que se puede cambiar en la sección settings de la room. Si lo que querés es que se vea más lenta la animación te recomiendo probar con números menores a 1 o 1 como máximo, por ejemplo 0.5, con el que si la velocidad de la room es 30 como predeterminado los fotogramas que van a verse en un segundo serán 15. Espero que te sirva.  ;)
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo, Mental.Gif

Desconectado Mental.Gif

Re:ayuda en la previsualizacion del sprite animado
« Respuesta #4 en: Enero 12, 2018, 07:38:04 pm »
https://www.youtube.com/watch?v=zgD6LvR97hE
ok mirad, acabo de darme cuenta dond esta el fallo!!! no reside en la velocidad de movimiento o de animacion/sprites, sino en la colision del personaje con los bloques solidos, cuando el personaje camina se va hundiendo poco a poco (bajando repetidamente -1 Y hacia abajo) hechando a perder la animacion, o superponiendo mejor dicho, dos animaciones a la vez: cuando esta quieto y cuando camina, se activan ambas animaciones al mismo tiempo

sospecho, que el problema reside en la parte de //Animation
if (!place_meeting(x,y+1,objeto_Block))
(?)


o quizas mas probable, en la collision vertical del suelo:


//Vertical collicion

if (place_meeting(x,y+vsp,objeto_Block))
{
   while (!place_meeting(x,y+sign(vsp),objeto_Block))
   {
      y = y + sign(vsp);
   }
   vsp = 0;
}

y = y + vsp;



....que hago??  :'(
« última modificación: Enero 12, 2018, 10:39:30 pm por Mental.Gif »
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo

Desconectado Mental.Gif

Re:ayuda en la previsualizacion del sprite animado
« Respuesta #5 en: Enero 12, 2018, 07:49:47 pm »
Buenas, 2.5 de image_speed es más alto que el 2 que pusiste antes. El problema es mientras más grande sea el número de la image_speed más rápido pasarán los fotogramas de la animación, ya que lo que hace la variable es ver cuantos fotogramas se deben pasar en un segundo multiplicandose por la velocidad de la habitación, que se puede cambiar en la sección settings de la room. Si lo que querés es que se vea más lenta la animación te recomiendo probar con números menores a 1 o 1 como máximo, por ejemplo 0.5, con el que si la velocidad de la room es 30 como predeterminado los fotogramas que van a verse en un segundo serán 15. Espero que te sirva.  ;)

muchas gracias MateG_ !!!
acabo justamente de crear el sprite del personaje saltando:

Código: [Seleccionar]
//Animation
if (!place_meeting(x,y+1,objeto_Block))
{
sprite_index = sprite_Jum1;
image_speed = 0;
if (sign(vsp) > 0) image_index =1; else image_index = 0;
}
else
{
image_speed = 1.5;
if (hsp == 0)
{
sprite_index = Sprite_Prota_Quiet;
}
else

{


sprite_index = Spr_Prota_run;

}
}

if (hsp != 0) image_xscale = sign(hsp);



ah y ya que estoy, no consigo bien editar el codigo del salto Jump!!! Cuando pega un princo el personaje, solo se visualizan 2 fotogramas de la animacion, y en teoria son 14 sprites diferentes cuando salta el sprite_Jum1, cambie el image_speed = 0; poniendo todo tipo de numeros y nada.. sigue haciendose el caganer cuando brinca  XD
« última modificación: Enero 12, 2018, 08:48:54 pm por Mental.Gif »
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo

Desconectado MateG_

Re:ayuda en la previsualizacion del sprite animado
« Respuesta #6 en: Enero 12, 2018, 09:55:05 pm »
Me alegra que te haya servido. En cuando la animación de salto si esta posee la subida y la bajada del mismo lo que podrías hacer es que la animación fluya normalmente y que cuando llegue a su ultimo fotograma se mantenga en el mismo hasta que toque el suelo y cambie de sprite a otro según ya lo tengas armado.

Para hacer eso lo que deberías hacer es crear un evento "Animation End" en Other y escribir lo siguiente:

Código: [Seleccionar]
if sprite_index = sprite_Jum1
{
image_index = (el número del ultimo fotograma)
}
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo, Mental.Gif

Desconectado Mental.Gif

Re:ayuda en la previsualizacion del sprite animado
« Respuesta #7 en: Enero 12, 2018, 10:21:09 pm »
Me alegra que te haya servido. En cuando la animación de salto si esta posee la subida y la bajada del mismo lo que podrías hacer es que la animación fluya normalmente y que cuando llegue a su ultimo fotograma se mantenga en el mismo hasta que toque el suelo y cambie de sprite a otro según ya lo tengas armado.

Para hacer eso lo que deberías hacer es crear un evento "Animation End" en Other y escribir lo siguiente:

Código: [Seleccionar]
if sprite_index = sprite_Jum1
{
image_index = (el número del ultimo fotograma)
}


Gracias por la info!! que pena que no funcciono, cuando pega el salto no se visualiza el primer sprite y ultimo en la subida y bajada, sino que se visualizan los 2 primeros frames de la animation (son 12 en total).

acabo de darme cuenta que para crear el codigo, segui el tuto del youtuber Shaun Spalding: https://www.youtube.com/watch?v=Y6l02DcpSR4
y la cosa es que en su animation del salto: solo tiene 2 sprites para el Jump, es logico pensar que al seguir su codigo llegue a resultados similares.. asi que donde hay que cambiar la cosa esta en el codigo del evento step //animation si o si
 
« última modificación: Enero 12, 2018, 10:23:54 pm por Mental.Gif »
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo

Desconectado Mental.Gif

Re:ayuda en la previsualizacion del sprite animado
« Respuesta #8 en: Enero 12, 2018, 10:37:40 pm »
https://www.youtube.com/watch?v=zgD6LvR97hE
ok mirad, acabo de darme cuenta dond esta el fallo!!! no reside en la velocidad de movimiento o de animacion/sprites, sino en la colision del personaje con los bloques solidos, cuando el personaje camina se va hundiendo poco a poco (bajando repetidamente -1 Y hacia abajo) hechando a perder la animacion, o superponiendo mejor dicho, dos animaciones a la vez: cuando esta quieto y cuando camina, se activan ambas animaciones al mismo tiempo

sospecho, que el problema reside en la parte de //Animation
if (!place_meeting(x,y+1,objeto_Block))
(?)


o quizas mas probable, en la collision vertical del suelo:


//Vertical collicion

if (place_meeting(x,y+vsp,objeto_Block))
{
   while (!place_meeting(x,y+sign(vsp),objeto_Block))
   {
      y = y + sign(vsp);
   }
   vsp = 0;
}

y = y + vsp;



....que hago??  :'(


ENCONTRE EL VERDADERO FALLO!!! (disculpen las mayus) El problema no esta en ningun codigo, sino en las mascaras de la animacion!! las intercale torpemente!! ^^' pues eso, tema del bug de colisiones resuelto!!!  :D

« última modificación: Enero 12, 2018, 10:40:19 pm por Mental.Gif »
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo