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.
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
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()
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)
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" :/
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]
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.