Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

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: Juego de lucha 2  (Leído 507 veces)

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

Desconectado Neodreamer

  • Asiduo
  • *
  • Puntos: 276
  • Mensajes: 151
  • Sexo: Masculino
    • Ver Perfil
en: Septiembre 06, 2019, 05:52:59 pm
Hola buenas ya pude hacer todo el tema la sombras y movientos en los poderes de los personajes , ahora estoy intentando hacer  , y no consigo que el personaje bloquee.He asignado un botón a una variable :  blok =keyboard_check_pressed(ord('V')); , el personaje principal bloquea perfectamente  en la animación , no le resta vida , pero despúes  el enemigo se queda un sin quitarle la vida un rato hasta que no le vuevo ha pegar .Aquí el codigo :
///st_blokqueo
if(state_new)
{                               // Primer fotograma al cambiar de estado
                                sprite_index = spr_sub_zero_blok
                                image_speed = 0.15;
                                image_index = 0 ;
                                mask_index = spr_nomask
                 
                                }


if(image_index >=               // Cambios de estado
    image_number-image_speed)   image_speed = 0;

   
if state_timer >=               // Cambios de estado
    round(room_speed * 2 )         state_switch("idle");
Cuando asigno la mask_index  me deja bloquear , sin quietar vida al personaje , en cuanto la quito el personaje me quita vida. Tengo el juego bastante completado me hace falta pues el que personaje bloquee ,haber si me podeis ayudar.Gracias .
« última modificación: Septiembre 08, 2019, 07:40:12 pm por Johann »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2474
  • Mensajes: 2.037
  • Agradecido: 89 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #1 en: Septiembre 06, 2019, 10:13:24 pm
apenas he entendido nada... entonce,supoooongo que el mask_index = spr_nomask es cuandobloquea?

de ser así nosería solamente poner

Código: [Seleccionar]
if  blok
      mask_index = spr_nomask;
else
      mask_index = spr_maskdesiempre


la verdad que no he entendido apenas nada de tu post, entonces me lo he inventado xd

"ola k ase clickarme o k ase"
la imagen no se quita xD
 


Desconectado Neodreamer

  • Asiduo
  • *
  • Puntos: 276
  • Mensajes: 151
  • Sexo: Masculino
    • Ver Perfil
Respuesta #2 en: Septiembre 07, 2019, 02:38:23 pm
Hola lo siento si no se entendió , vamos haber tengo asignado un boton a una variale V , que se encarga de  bloquear  , el estado se ejecuta sin ningun problema he asignado su mask_index = spr_no_mask .El enemigo  me golpea no resta vida en NINGUN golpe cuando bloqueo  , pero depúes   se queda sin quitar  ya  vida hasta que no vuelvo  a pegarle yo otra vez que entoces si,  me vuevle a quitar vida , vuelvo a bloquear se queda sin quitar vida hasta que no le pego  . He aquí el nuevo código  :
///st_blok
if(state_new)
{                               // Primer fotograma al cambiar de estado
                                sprite_index = spr_sub_zero_blok
                                image_speed = 0.15;
                                image_index = 0 ;
                                mask_index = sp_sub_zero_nomask
}

if(image_index >=               // Cambios de estado
    image_number-image_speed)   image_speed = 0;

   
if state_timer >=               // Cambios de estado
    round(room_speed )         state_switch("idle");
    mask_index = sp_sub_zero_mask ;
  Debería quitarme vida cuando deje de pulsar  V , despúes vuelvo a pulsar V , y no restar vida. El juego esta bastante avanzado  ,  solo me falta implementar algunos movimientos  mas .Gracias
« última modificación: Septiembre 08, 2019, 07:40:56 pm por Johann »

 


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2474
  • Mensajes: 2.037
  • Agradecido: 89 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #3 en: Septiembre 07, 2019, 11:39:37 pm
por favor la prxima vez usa la etiqueta
Código: [Seleccionar]
[gml] tu codigo [/gml]
en ese código no veo nada de la V, pero como te dije antes... tienes para asignar la mask_no_mask, pero no tienes ningún else que quite esa mask
si pusiste la V en la variable block, entonces con el código que te puse debería ser suficiente... ya que imagino que la manera en la que no te hacen daño es pk no tienes mask entonces no hay colisión cierto? si es así, repito, el código que te puse debería ser más que suficiente

"ola k ase clickarme o k ase"
la imagen no se quita xD
 
Los siguientes usuarios dieron las gracias a este tema: Neodreamer


Desconectado Neodreamer

  • Asiduo
  • *
  • Puntos: 276
  • Mensajes: 151
  • Sexo: Masculino
    • Ver Perfil
Respuesta #4 en: Septiembre 08, 2019, 07:10:30 pm
Hola compi kostra he hecho justo lo que dices en state blok  y no me bloquea , el jugador hace el moviemiento de bloquear pero sigue recibiendo los golpes.
Ya no se que hacer. Si quieres te envió el proyecto y le hechas un vistazo . Aquí el nuevo código ;

///st_BLOK 
if(state_new)
{                               // Primer fotograma al cambiar de estado
                                sprite_index = spr_billy_blok
                                image_speed = 0.15;
                                image_index = 0
                                if  blok
      mask_index = sp_williams_nomask;
else
      mask_index = sp_williams_mask
                                }
Perdon por no usar etiquetas pero es no se donde está el botón.Gracias
« última modificación: Septiembre 08, 2019, 07:44:19 pm por Johann »

 


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2474
  • Mensajes: 2.037
  • Agradecido: 89 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #5 en: Septiembre 08, 2019, 07:14:16 pm
ni siquiera sé lo que es state new, dale envia proyecto a ver, xd

"ola k ase clickarme o k ase"
la imagen no se quita xD
 


Desconectado elviskelley

Respuesta #6 en: Septiembre 09, 2019, 12:14:45 am
debes desactivar state_new

Atentamente.-
Elvis Kelley
Mi Manual.
 


Desconectado getnoff

Respuesta #7 en: Septiembre 09, 2019, 01:13:47 am
Es extraño que hagas un cambio de mask para producir un efecto de bloqueo.

Como usas una máquina de estados, no debería haber problema si al bloquear pasa al estado bloqueando y cuando sueltas vuelve al estado normal, podrías mirar el debug para comprobar que los valores de todas tus variables son correctos, es muy útil cuando tenemos ya un juego con muchas cosas.

Ahora por lo que mencionas quizás el problema no es el jugador, sino el enemigo que se le cambia algo cuando le bloqueas.

 


Desconectado Neodreamer

  • Asiduo
  • *
  • Puntos: 276
  • Mensajes: 151
  • Sexo: Masculino
    • Ver Perfil
Respuesta #8 en: Septiembre 09, 2019, 02:28:33 pm
Hola pues puede ser que el problema sea el objecto enemigo  , aún no he dado con la solución parace ser que cuando bloqueas el enemigo , por alguna razon pierde su mask
index , y ya no puede seguir quitando vida, hasta que no le vuelvo yo a pegar , que entonce si vuelve a quitarme vida. Este el engine que estoy usando  :  https://www.youtube.com/watch?v=7vuoJSgVf7A 
El concepto de estados al enemigo se ponerlos no hay problema , hay algun movientos donde todavía no he logrado entender donde se puede quitar mas vida cuando yo le golpeo , por que creo moviemtos y no consigo quitarle más vida,  es un motor complicado de entende , además aun no le logrado hacer más movimientos que quiero realizar
.Por cierto seríais amables de decirme como puedo subir el proyecto a la web , o , os lo mando por mail para que lo editeis. Gracias.

 


Desconectado getnoff

Respuesta #9 en: Septiembre 09, 2019, 04:26:23 pm
Tienes 2 opciones cómodas:

Una que adjuntes el editable aquí mismo, escribes una respuesta más y luego le das a opciones adicionales - Adjuntar
Lo malo de esto es que cualquiera podría descargar el editable y luego creo que no se puede eliminar del foro (si es que te importa ello claro).

La otra opción es que subas tu editable a un servidor para alojar archivos como dropbox, mediafire o mega; y después vas a nuestros perfiles y nos envías por mensaje privado el enlace del editable para que podamos descargarlo.

 


Desconectado Neodreamer

  • Asiduo
  • *
  • Puntos: 276
  • Mensajes: 151
  • Sexo: Masculino
    • Ver Perfil
Respuesta #10 en: Septiembre 09, 2019, 07:48:44 pm
Hola pues no tengo cuenta en media fire ni mega , si me das el correo   os lo mando  mando por ahí si  lo deseais por mesaje privado y te lo envío. Gracias.
« última modificación: Septiembre 09, 2019, 10:18:10 pm por Neodreamer »

 


Desconectado getnoff

Respuesta #11 en: Septiembre 10, 2019, 12:07:59 am
Muy bien ya te he enviado un privado, por mientras estaba aprovechando de mirar los videos de hektor para entender esa máquina de estados y parece interesante por su fácil uso, pero algo se te debe haber escapado en alguna parte, tu uso de la no_mask puede no ser compatible ya que originalmente era para la muerte del jugador.

 


Desconectado getnoff

Respuesta #12 en: Septiembre 10, 2019, 08:11:10 pm
Ya lo solucioné. El código para el script del bloqueo lo dejé así:
///st_blok
if(state_new)
{                               // Primer fotograma al cambiar de estado
                                sprite_index = spr_billy_blok
                                image_speed = 0.15;
                                image_index = 0
                                mask_index = sp_billy_nomask;
       
   
}
                       
                               
if(image_index >=               //Animación
    image_number-image_speed)   image_speed = 0;
   
   

   
if state_timer >= round(room_speed)      // Cambios de estado
{
    mask_index = sp_billy_mask;
    state_switch("idle");
}


Mira el error era en primer lugar por sintaxis, cuando tenías puesto esto
if state_timer >=               // Cambios de estado
    round(room_speed )         state_switch("idle");
    mask_index = sp_sub_zero_mask ;
si te fijas tenías el if sin llaves, entonces sólo se estaba ejecutando la primera instrucción que era volver al estado idle, pero la otra que era volver a la máscara ya se tomaba como fuera del if

Algo más, me di cuenta que para el estado del block copiaste el del ataque puño del enemigo, supongo que era para aprovechar el state timer que daba un rato para que sub-zero se cubra, pero como ese estado ataque del enemigo no tenía cambios de máscara, por eso desde un principio no le estabas estableciendo que regresara la máscara del jugador del estado idle.

Para acabar te doy un consejo: debugea información, el mismo hektor lo dice en uno de los videos, en el objeto del jugador en su evento draw gui pon esto:
///Debug en GUI

draw_set_color(c_white);
draw_set_alpha(0.3);
draw_rectangle(0,0,200,150,false);

draw_set_alpha(1);
draw_set_color(c_black);
draw_text(20,20,
    "State: "+string(state_name) +
    "#image_index: "+string(image_index) +
    "#mask_index: "+string(mask_index));
Con esto se muestra el número de estado y mask que tiene el jugador todo el rato y me facilitó mucho encontrar la falla, si lo utilizas te servirá si te vuelve aparecer un error similar más adelante.