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: ¿Como puedo hacer un bonus de Doble Disparo?  (Leído 583 veces)

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

Desconectado Fabriyin

en: Enero 20, 2020, 04:58:02 am
Hola , Buenas:

Quisiera saber como poder hacer una bola que flote por una room aleatoriamente tipo como la Bola Smash del Super Smash Bros , para que cuando la rompas al colisionar balas con él , el jugador que la haya destruído tenga un doble disparo por un tiempo limitado de 30 segundos

Atentamente: (y con cariño)

Fabricio Franco Francisco Frank Rodrigo Alejandro Alex Cirilo Oliver Oliva López
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Black_Cat

Respuesta #1 en: Enero 20, 2020, 03:34:44 pm
Como diría nuestro colega Sobako: "te respondiste solo xd "

y bueno basicamente, tenés que gatillar una alarma en el evento destroy del objeto bola. Podrías poner la alarma en el jugador, indicando con una variable , llamemosle "doble_disparo" que al acabar el tiempo se haga false.
Basicamente, en el objeto bola, al momento de destruirse seteas "doble_disparo" del objeto player en true y calculás los 30 segundos dentro del player para setearla a false.
Ya dependiendo del valor hacés que e ljugador pueda hacer 2 tiros, imagino que con una variable de contador o algo del estilo.


 
Los siguientes usuarios dieron las gracias a este tema: Fabriyin


Desconectado xStarLordx

Respuesta #2 en: Enero 21, 2020, 01:39:23 am
Soy bastante malo explicando las cosas :-[, por eso te dejo un mini proyecto con un ejemplo basico de como cambiar el tipo de disparo.
Espero que entiendas.

 


Desconectado Fabriyin

Respuesta #3 en: Enero 25, 2020, 06:19:04 am
Soy bastante malo explicando las cosas :-[, por eso te dejo un mini proyecto con un ejemplo basico de como cambiar el tipo de disparo.
Espero que entiendas.

Muchas gracias , pero no pude abrir el proyecto :c , yo uso el Game Maker studio 2 la versión de escritorio

Atentamente: (y con cariño)

Fabricio Franco Francisco Frank Rodrigo Alejandro Alex Cirilo Oliver Oliva López
 


Desconectado xStarLordx

Respuesta #4 en: Enero 26, 2020, 04:22:33 am
Yo no tengo el GMS 2 pero te voy a dejar el codigo del GMS1 y tu le cambias las funciones obsoletas.
Nesecitas al menos 3 objetos objPlayer, objBala y objPowerUp
OBJPLAYER:
Evento create
///variables
//movimiento
yy = 0;
spd = 0;

//Variable para controlar el tipo de bala que vamos a disparar
bulletState = "normal";

Evento step:
///Movimiento
var kDown, kUp;

kDown = keyboard_check(vk_down);
kUp   = -keyboard_check(vk_up);

spd = kDown + kUp;

//Velocidad
if (spd != 0) yscale = spd;
yy = spd * 3;

y += yy;

///Control de Disparo
if (keyboard_check_pressed(ord("S")))  //Si presionamos la tecla S
{
  switch(bulletState)  //disparamos en funcion de la variable bulletState
    {
      case "normal":   //si bulletState = "normal"
        instance_create(x+16, y, objBala); //disparamos una sola bala
      break;
     
      case "doble":   //si bulletState = "doble"
        instance_create(x+16, y-10, objBala)  //disparamos
        instance_create(x+16, y+10, objBala)  //dos balas
      break;
    }
}

Evento alarma 0:
///Cambiar el tipo de disparo
bulletState = "normal";

OBJPOWERUP:
Evento step:
///Control

if (place_meeting(x,y,objBala))
{
  instance_destroy(); //destruirse
  with(other)instance_destroy(); //destruir el objeto que coliciono con el
  objPlayer.bulletState = "doble";
  objPlayer.alarm[0]  = 150
  /*
 150 steps son 5 segundos lo puse asi para ver el cambio sin
 tener que esperar 30 segundos. Si quieres saber cuantos steps
 son X segundos solo multiplica 30 por la cantidad de segundos
 que quieras.
 */
}

OBJBALA:
evento create:
hspeed = 8;

PD: Espero que ahora si te pueda ayudar. Saludos xStarLordx

 
Los siguientes usuarios dieron las gracias a este tema: Fabriyin