GMS: Lanzar roca grandre


He aqui un tutorial de Gamemaker Studio para compartir con ustedes como le hize para que la habilidad golem pudiera arrojar una roca gigante a un angulo

Puedes escribir los codigos para tu juego y modifiarlo, tanto para fines comerciales como no comerciales

Aqui hay un ejemplo: https://emtrexgames127.itch.io/gms-lanzar-roca-ejemplo

En primer lugar he creado 4 objetos; El que tira, la piedra, la piedra arrojada y la flecha 

Para el que tira se tiene que crear el objeto; se pone los codigos en "Execute a piece of code" o "ejecutar pieza de codigo"

  • //Event create
  • movil = 1 //La variable movil servira para que el jugador pueda voltearse y asi poder apuntarlo
  • //Step (o tambien puedes usar keypress o keyboard)
  • if movil = 1{
    if keyboard_check(vk_left) {image_xscale = -1}  //Girar/Moverse 
  • if keyboard_check(vk_right) {image_xscale = 1}  //Girar/Moverse
  • if keyboard_check_pressed(ord("A")) {instance_create(x-64,y-96,obj_rocapreparar) movil = 0} //Prepararse para tirar roca, movil = 0 sirve para que no se mueva mientras prepara la roca

Para la roca que se esta preparando: Se crean 2 objetos, la roca normal y la roca arrojada

  • //Step
  • {x = obj_jugador.x-64 //Puedes cambiar el "-64" para ajustar
  • y = obj_jugador.y-96 //Puedes cambiar el "-96" para ajustar
    if !instance_exists(obj_flechaindicar) //Si no existe la flecha que indica
  •  {with instance_create(x+48,y+48,obj_flechaindicar)  //apuntar hacia frente o detras 
  • //apuntar hacia frente o detras (Puedes cambiar el "-20" y/o el "200" para ajustar el angulo minimo)
  • {if obj_jugador.image_xscale = 1 {obj_flechaindicar.angulo = -20 obj_flechaindicar.image_angle = -20}} //Apuntar a la derecha
  •  if obj_jugador.image_xscale = -1 {obj_flechaindicar.angulo = 200 obj_flechaindicar.image_angle = 200} }  //Apuntar a la izquierda
  • if instance_exists(obj_flechaindicar) {with obj_flechaindicar  /
  • /If angle < 60 y angle > 120;  sirve para indicar lo maximo que puede apuntar arriba/abajo, tambien modificable al gusto
  •  {if angulo < 60 and obj_jugador.image_xscale = 1 {angulo += 3} //Apuntar izquierda
  • else
  • if obj_jugador.image_xscale = 1 {angulo = 60} //Ajustar hacia el angulo maximo
  •  if angulo > 120 and obj_jugador.image_xscale = -1 {angulo -= 3} //Apuntar derecha
  •  else
  •  if obj_jugador.image_xscale = -1 {angulo = 120} } } //Ajustar hacia el angulo maximo
  • //Si ya no se presiona la tecla de accion, entonces crear la roca que es arrojada
  •  if !keyboard_check(ord("A")) {obj_jugador.movil = 1 action_create_object_motion(obj_rocalanzada,x,y,12,obj_flechaindicar.angulo) with obj_flechaindicar {instance_destroy()} instance_destroy()} }


Para la roca ya arrojada: Solo se pone la gravedad 

  • //Step
  • action_set_gravity(270,0.5) //Pone la gravedad, porcierto es action_set_gravity(direction,gravity)
  • if vspeed > 10 {vspeed = 10} //Esto ultimo se pone para controlar la velocidad a la que caiga, si quieres pudes quitarlo, no es obligatorio

La flecha: Sirve para indicar al jugador donde arrojara la roca, es importante poner como origen del sprite, el centro

  • Step
  • image_angle = angulo //Servira para que pueda apuntar
  • if obj_rocapreparar.depth > depth {depth = obj_rocapreparar.depth-100} //Esto sirve para ajustar la profundidad de la flecha
  • //Es importante que la flecha tenga menor profundidad que la roca, aunque esto no es obligatorio


Con esto, podras hacer que tu personaje pueda arrojar una piedra gigante hacia sus enemigos

Cualquier duda, escriban su duda en los comentarios

Get Latigo igualitario

Leave a comment

Log in with itch.io to leave a comment.