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
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.
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.
Cita de: xStarLordx 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.
Muchas gracias , pero no pude abrir el proyecto :c , yo uso el Game Maker studio 2 la versión de escritorio
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
[gml]///variables
//movimiento
yy = 0;
spd = 0;
//Variable para controlar el tipo de bala que vamos a disparar
bulletState = "normal";[/gml]
Evento step:
[gml]///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;
}
}
[/gml]
Evento alarma 0:
[gml]///Cambiar el tipo de disparo
bulletState = "normal";[/gml]
OBJPOWERUP:
Evento step:
[gml]///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.
*/
}[/gml]
OBJBALA:
evento create:
[gml]hspeed = 8;[/gml]
PD: Espero que ahora si te pueda ayudar. Saludos xStarLordx