Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Problema con las animaciones  (Leído 408 veces)

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

Desconectado zorge

en: Enero 22, 2018, 12:42:55 am
Buenas noches, nuevamente vengo a pedir ayuda, ya que programando desgraciadamente soy un poco malillo, tengo mi player con sus respectivos movimientos, todo bien cada uno de ellos acompañados de su respectiva animación, y todo funcionaba perfectamente hasta que incorpore la animación de muerte, que no se porque motivo no se reproduce.
Dejo aquí mi codigo por si alguien me puede orientar, no se rian mucho de mi codigo como digo soy muy malo en ello y voy cogiendo de aqui de alli etc etc.

evento step : if move  = 0  {sprite_index = SprFoxyIdle image_speed = 0.2}
if move  = 1  {sprite_index = SprFoxyRun image_speed = 1.2}
if move  = 2  {sprite_index = SprFoxyJump; image_speed = 0}
if move  = 3  {sprite_index = SprFoxyDead; image_speed = 0}

if keyboard_check(vk_right) or keyboard_check(vk_left )and move !=3 {move = 1}else move = 0
if keyboard_check(vk_right) and keyboard_check(vk_left ) {hspeed = 0;move = 0}


if place_meeting(x,y+vspeed,objslope2) {if vspeed >=17.5 {move = 3}}
if place_meeting(x,y+vspeed,P_escenario0) {if vspeed >=17.5 {move = 3}}

evento end step :
vspeed += m_gravity;

if keyboard_check(vk_left)
{
    move_contact_solid(90,m_step);
    move_contact_solid(180,m_speed);
    move_contact_solid(270,m_step);
    image_xscale = -1;
}

if keyboard_check(vk_right)
{
    move_contact_solid(90,m_step);
    move_contact_solid(0,m_speed);
    move_contact_solid(270,m_step);
    image_xscale = 1;
}

if keyboard_check_pressed(vk_up)
if !place_free(x, y+16)
{
    vspeed = m_jump;
}
if vspeed <0 { move = 2 image_index = 0 }

realmente antes si me funcionaba cuando tenia puesto un instance destroy ya que se destruia la instancia al tocar el suelo cuando la vspeed era mayor a 17.5
pero al cambiar el instance destroy por el move = 3 ya no me funciona y no se porque si el instance_destroy si que lo hacia.
Muchas gracias de antemano.

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado nonoroman

Respuesta #1 en: Enero 23, 2018, 08:45:47 am
Vale, no te funciona, pero que accion esta haciendo entonces???

Buenas noches, nuevamente vengo a pedir ayuda, ya que programando desgraciadamente soy un poco malillo, tengo mi player con sus respectivos movimientos, todo bien cada uno de ellos acompañados de su respectiva animación, y todo funcionaba perfectamente hasta que incorpore la animación de muerte, que no se porque motivo no se reproduce.
Dejo aquí mi codigo por si alguien me puede orientar, no se rian mucho de mi codigo como digo soy muy malo en ello y voy cogiendo de aqui de alli etc etc.

evento step : if move  = 0  {sprite_index = SprFoxyIdle image_speed = 0.2}
if move  = 1  {sprite_index = SprFoxyRun image_speed = 1.2}
if move  = 2  {sprite_index = SprFoxyJump; image_speed = 0}
if move  = 3  {sprite_index = SprFoxyDead; image_speed = 0}

if keyboard_check(vk_right) or keyboard_check(vk_left )and move !=3 {move = 1}else move = 0
if keyboard_check(vk_right) and keyboard_check(vk_left ) {hspeed = 0;move = 0}


if place_meeting(x,y+vspeed,objslope2) {if vspeed >=17.5 {move = 3}}
if place_meeting(x,y+vspeed,P_escenario0) {if vspeed >=17.5 {move = 3}}

evento end step :
vspeed += m_gravity;

if keyboard_check(vk_left)
{
    move_contact_solid(90,m_step);
    move_contact_solid(180,m_speed);
    move_contact_solid(270,m_step);
    image_xscale = -1;
}

if keyboard_check(vk_right)
{
    move_contact_solid(90,m_step);
    move_contact_solid(0,m_speed);
    move_contact_solid(270,m_step);
    image_xscale = 1;
}

if keyboard_check_pressed(vk_up)
if !place_free(x, y+16)
{
    vspeed = m_jump;
}
if vspeed <0 { move = 2 image_index = 0 }

realmente antes si me funcionaba cuando tenia puesto un instance destroy ya que se destruia la instancia al tocar el suelo cuando la vspeed era mayor a 17.5
pero al cambiar el instance destroy por el move = 3 ya no me funciona y no se porque si el instance_destroy si que lo hacia.
Muchas gracias de antemano.

PCNONOGames  www.pcnono.es
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado zorge

Respuesta #2 en: Enero 23, 2018, 09:31:03 am
Vale, no te funciona, pero que accion esta haciendo entonces???

Buenas noches, nuevamente vengo a pedir ayuda, ya que programando desgraciadamente soy un poco malillo, tengo mi player con sus respectivos movimientos, todo bien cada uno de ellos acompañados de su respectiva animación, y todo funcionaba perfectamente hasta que incorpore la animación de muerte, que no se porque motivo no se reproduce.
Dejo aquí mi codigo por si alguien me puede orientar, no se rian mucho de mi codigo como digo soy muy malo en ello y voy cogiendo de aqui de alli etc etc.

evento step : if move  = 0  {sprite_index = SprFoxyIdle image_speed = 0.2}
if move  = 1  {sprite_index = SprFoxyRun image_speed = 1.2}
if move  = 2  {sprite_index = SprFoxyJump; image_speed = 0}
if move  = 3  {sprite_index = SprFoxyDead; image_speed = 0}

if keyboard_check(vk_right) or keyboard_check(vk_left )and move !=3 {move = 1}else move = 0
if keyboard_check(vk_right) and keyboard_check(vk_left ) {hspeed = 0;move = 0}


if place_meeting(x,y+vspeed,objslope2) {if vspeed >=17.5 {move = 3}}
if place_meeting(x,y+vspeed,P_escenario0) {if vspeed >=17.5 {move = 3}}

evento end step :
vspeed += m_gravity;

if keyboard_check(vk_left)
{
    move_contact_solid(90,m_step);
    move_contact_solid(180,m_speed);
    move_contact_solid(270,m_step);
    image_xscale = -1;
}

if keyboard_check(vk_right)
{
    move_contact_solid(90,m_step);
    move_contact_solid(0,m_speed);
    move_contact_solid(270,m_step);
    image_xscale = 1;
}

if keyboard_check_pressed(vk_up)
if !place_free(x, y+16)
{
    vspeed = m_jump;
}
if vspeed <0 { move = 2 image_index = 0 }

realmente antes si me funcionaba cuando tenia puesto un instance destroy ya que se destruia la instancia al tocar el suelo cuando la vspeed era mayor a 17.5
pero al cambiar el instance destroy por el move = 3 ya no me funciona y no se porque si el instance_destroy si que lo hacia.
Muchas gracias de antemano.
Eso es lo que quisiera saber.... XD no se el porque no me funciona lo he cambiado casi todo dos o tres veces y cuando cambio va a peor....sale la animacion o no sale y se para o empieza a correr demasiado....

 


Desconectado nonoroman

Respuesta #3 en: Enero 23, 2018, 10:23:20 am
Al parecer tienes mal planteado el step.

Cuando pueda tenga tiempo, lo reviso.

 ;)

PCNONOGames  www.pcnono.es
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado nonoroman

Respuesta #4 en: Enero 23, 2018, 11:30:21 am
Bueno, zorge, lo primero encantado de conocerte, paisano, jeejeje.

A ver en tu codigo, por lo que puedo yo ver y entender.

Dices que cuando el player muere, es cuando move = 3, entiendo. Y despues no realiza la animacion deseada.

Yo creo que lo que te esta ocurriendo es lo siguiente, cuando muere, realmente asignas el move a 3, pero inmediatamente despues se te cambia el move a otro valor, ya sea porque estas pulsando una tecla, o por otro motivo que ahora se me escapa.

Para averiguarlo, visualiza por el depurador o simplemente mostrando en pantalla, el valor de move en todo momento. A ver si cuando muere el player, realmente el valor de move permanece en 3 y no es pisado por otro valor.

Comprueba esto, y seguro que te acercaras mas a la solucion.  ;)


PCNONOGames  www.pcnono.es
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo