Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - Harushio

1
¡Muchas gracias a ambos!
Le dare una checada al video espero que funcione en Game maker studio 2, para finalmente terminar el pequeño demo que llevo haciendo durante este tiempo.
2
Haz sido de mucha ayuda gracias!
Ya estoy suscrito a tu canal y veo que tienes varios videos explicativos en Game Maker 1, ¿También son compatibles con Game Maker Studio 2? Quizá sea una pregunta un poco tonta pero por algunos tutorías es que he visto he tenido que adaptar el código o a veces no funcionan como es debido

¿Podrías explicarme un poco más de las alarmas?
Supongo que debo colócarlo en un Step event junto con un comando de Alarm[0] -= 1 y para cambiar el el estado
[gml]
If (alarm[1] < 0)
{
alarm[0] = 30;
state = ENEMYSTATE.FREE;
}
// y para cambiar al siguiente seria..
If (alarm[0] < 0)
{
alarm[1] = 30;
state = ENEMYSTATE.ATTACK;
}

[/gml]

¿Sería algo así?

Cita de: elmmeronw en Junio 23, 2020, 06:37:12 AM
La racionalizan se puede usar de forma con alarma y randow  el randow indicaría el tiempo que podría llevar una acción a otra mientra que dentro de la alarma debe existir las condiciones de la acción aliatoridad para no tener que ejecutar tanta alarmas cuando todo este equipado en una sola.

Me encantaría aprender más de las alarmas y el comando randow, ¿podrías explicarme un poco más si no es molestia? O recomendarme uno de tus videos en el que hables de eso.

Muchas gracias nuevamente!
3
Que tal! Soy nuevo tanto en GML como en este foro
Queria preguntar unas cuantas dudas, espero puedan ayudarme
Llevo poco menos de 2 semanas intentando programar 1 enemigo, quiero que siga al jugador, ya he intentado con varios codigos y comandos y si lo he logrado pero he tenido problemas con cada uno.
--"Move_toward": Sigue al jugador pero no respeta las colisiones ni el cambio de sprite para las animaciones aun poniendole una condicional con "speed" u "Horizontalspeed"
-- "Pathfinding": Me ha servido bastante pero una vez que sigue al jugador no se detiene aunque despues le ponga "Panth_ends()" (codigo 1)
-- Intente con un codigo de un tutorial el cual tuve que adaptar ya que este era de Game Maker 1, si cumplio su objetivo de seguir al jugador y si esta cerca ejecutar animacion de ataque pero una vez que llega al punto donde se encuentra el jugador o colisiona con otro objeto no vuelve a moverse mas. (Codigo 2)

Estoy utilizando switch states y scripts para todo esto.

Mis dudas son las siguientes:
1.- Si estoy haciendo algun codigo mal o hay algun error que no he visto y si alguno de ustedes podria ayudarme con un codigo que lo solucione o que funcione mejor.
2.- ¿Es posible tener una especie de "Delay" o "Cooldown" entre los cambios de estado? Por ejemplo, que el enemigo siga al jugador durante 5 segundos o cierta cantidad de pasos y despues se quede quieto como a descansar por 5 segundos y despues a perseguir al jugador nuevamente.
3.- De igual forma hacer un "random" (es algo que aun no entiendo del todo bien como funciona, pero busco hacer que el enemigo tome su propia decision a base de aleatoriedad, por ejemplo, que persiga al enemigo, descanse 5 segundo y despues elija si lo atacara o solo pasara por encima o ejecutar otro ataque distinto.

Por cierto el juego que hago es un Top-Down View algo asi como un Beat'Em'Up clasico, les agradezco a todos su ayuda de antemano y perdonen la biblia xd.

Codigo 1

[gml]
target = obj_player;

grid = mp_grid_create(0,0,room_width/32,room_height/32,32,32);
path = path_add();
mp_grid_add_instances(path,obj_collision,1);
mp_grid_path(grid,path,x,y,target.x,target.y,1);
path_start(path,3,0,1);


   if (x == 0 && y == 0)
   {
      sprite_index = spr_enemy_idleL;
   }
   else
   {
      image_speed = 0.8;
      sprite_index = spr_enemy_runL;
   }
   
if (x != 0) && sign(target.x - x) == 1
{
   sprite_index = spr_enemy_runR;
}
if (x != 0) && sign(target.x - x) == -1
{
   sprite_index = spr_enemy_runL;
}
   


if (x == 0 && y == 0) && sign(target.x - x) == 1
{
   sprite_index = spr_enemy_IdleR;
}
if (x == 0 && y == 0) && sign(target.x - x) == -1
{
   sprite_index = spr_enemy_idleL;
}

if distance_to_object(target)
{
path_ends();
state = MONSTERSTATE.FREE;
}
[/gml]

Codigo 2

[gml]
target = obj_player;

if instance_exists(target)
{
   
   if sign(target.y - y) == -1
   {
      keyUp = true;
   }

   if sign(target.y - y) == 1
   {
      keyDown = true;
   }



   if abs(target.x - x) > 35
   {
      if sign(target.x - x) == -1
      {
      keyLeft = true;
      }
      if sign(target.x - x) == 1
      {
      keyRight = true;
      }
   }
}
else
{
   if abs(target.y - y) < 5
   {
      keyAttack = true;
   }
   else
   {
      keyAttack = false;
   }
}



if (keyAttack = true) && sign(target.x - x) == 1
{
   hsp = 0;
   vsp = 0;
   sprite_index = spr_enemy_punchR;
}
if (keyAttack = true) && sign(target.x - x) == -1
{
   hsp = 0;
   vsp = 0;
   sprite_index = spr_enemy_punchL;
}


if (animation_end())
{
   sprite_index = spr_enemy_idleL;
   state = MONSTERSTATE.FREE;
}


[/gml]