Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Alex_Wallace en Marzo 29, 2015, 10:00:54 PM

Título: Bala con movimiento
Publicado por: Alex_Wallace en Marzo 29, 2015, 10:00:54 PM
Buenas, necesito ayuda, ya que estoy intentando hacer que cuando presiono la X el jugador dispare, pero me perdí, bien, mi código de momento va así:
Citarif !instance_exists(bala) {
    bala = instance_create(x,y,bala_jugador);
}
Bien, supongo que por ahora voy bien, pero no sé como hacer para mover a 'bala' hasta dónde yo quiero.
Me explico un poco mejor: Lo que yo quiero hacer, es que la bala se mueva hasta que impacte a determinado objeto.
¿Me podrían ayudar por favor?
Desde ya muchas gracias.
Título: Re:Bala con movimiento
Publicado por: eams1986 en Marzo 30, 2015, 01:54:25 AM
if !instance_exists(bala)//si la bala no existe
{
    instance_create(x,y,bala_jugador);// la creamos
}


Ahora sobre la bala a que direccion quieres implementarla.
Saludos
Título: Re:Bala con movimiento
Publicado por: 3dgeminis en Marzo 30, 2015, 02:03:57 AM
Simple, a la bala le das una velocidad y cuando colisione con otro objeto la destruis
CREATE
speed=10  ///velocidad
direction=0  ///direccion
COLISION
instance_destroy()
Título: Re:Bala con movimiento
Publicado por: elviskelley en Marzo 30, 2015, 02:29:55 PM
modificar tu codigo y desde el mismo object y event.

if !instance_exists(bala)
{
bala = instance_create(x,y,bala_jugador);

with(bala) {colocas para la derecha hspeed=10; para la izquierda hspeed-=10;}

}

Explicación: Al crear un object llamado sobre una variable (bala) esa variable almacena la id de la instancia recién creado (bala_jugador), teniendo la id de esa instancia (bala_jugador) usamos una sentencia with  para indicar que el siguiente código afecte a la instancia señalada entre sus paréntesis (bala) luego entre llaves ( {...} ) colocas las acciones que afectaran a esa instancia (la de la ID guardada en bala)
Título: Re:Bala con movimiento
Publicado por: Alex_Wallace en Marzo 30, 2015, 05:05:15 PM
Me estoy confundiendo, por qué ese código está en el objeto del jugador, si hago eso, ¿no estaría moviendo al jugador?

EDIT: Intento probar el código en el juego y me da "Fatal Error" :/
Título: Re:Bala con movimiento
Publicado por: Silver_light en Marzo 30, 2015, 05:16:42 PM
El código va en el objeto jugador, puesto que es desde allí ,donde queremos que se cree.

El codigo vá así:

[GML]
if !instance_exists(bala_jugador)  // Si no existe el disparo o que es lo mismo, el objeto "bala_jugador"...
{

disparo= instance_create(x,y,bala_jugador); //entonces creamos un disparo y almacenamos el ID del objeto para luego hacer referencia a este.

with(disparo) // Aqui al utilizar "with(bala)" hacemos que el siguiente código entre llaves se ejecute para el disparo creado anteriormente.
{
hspeed =10; // hacemos que dicho disparo se mueva
}//Aqui se cierran las llaves, por lo que cualquier código siguiente no valdrá para el disparo sino para el jugador.

[/GML]
Título: Re:Bala con movimiento
Publicado por: king195 en Marzo 30, 2015, 06:20:27 PM
Evento Create de la bala

a_bala = true;
spd=5;


Evento Step de la bala

if(a_bala==true){
if(mouse_check_button(mb_left)){
instance_create(obj_jugador.x,obj_jugador.y,obj_bala);
a_bala = false;
alarm[0] = room_speed * 0.5;

}

}


Evento Alarm[0] en la misma bala

a_bala = true;


La otra es que en vez de darle directamente las coordenadas como hice yo en el evento Step lo hagas con un With y te ahorras tener que poner el obj_Bala en la habitacion ya que se crea a partir del mismo personaje.