bueno pos vuelvo a hacer este tema ya que el anterior me lo borraron por estar mal hecho, espero k este est? bien.

yo tengo el GM7 y estoy haciendo un juego de plataformas tipo mario. ya consegui que disparara para 1 lado pero ahora me queda que dispare para el otro y no se como hacerlo. si me pudierais ayudar os estaria muy agradecido :D

hola, para ello solo tienes que usar las variables, por ejemplo:
en create
direcion="d"
al pulsar la tecla derecha pones
direcion="derecha"
al pulsar la tecla izquierda
direcion="izquierda"
y para disparar

if direcion="derecha"
{
       x+=5
}
if direcion="izquierda"
{
      x-=5
}

y ya esta, creo de todas formas (ahumque he buscado y no lo he encontrado) que esta pregunta ya ha sido forulada, parate de aver ejemplos en descarga
espero qeu te sirva
un saludo

me pasa una cosa muy rara y es k si pongo eso en vez de disparar corre mas rapido. :S
no se k puede ser

por que el x+=5 y x-=5 va para la bala, no el personaje...

corregido:
Citarif direcion="derecha"
{
       bala.x+=5
}
if direcion="izquierda"
{
      bala.x-=5
}

De esta manera, cuando el personaje dispare la bala, este mismo le asigna la direcci?n a la que esta ir?a.

Otra manera es que se le atribuya esto a la bala directamente una vez que se crea:

en create de la bala:
Citar
if (personaje.direcion=="derecha")
{
  x+=5
}

if (personaje.direcion=="izquierda"
{
  x-=5
}

Hay varias manera de hacerlo espero y alguna te sirva  :-[

El error de eso es que la direcci?n de la bala va a ir cambiando conforme vaya cambiando la del personaje.

Lo correcto ser?a poner esto en Create de la bala:

if (personaje.direcion=="derecha") direction = 0 else direction = 180;
speed = 6;

#5 Noviembre 24, 2009, 12:23:16 AM Ultima modificación: Noviembre 24, 2009, 12:48:16 AM por van OMQ
bueno yo tenia la misma interrogante pero en el foro me dieron la solucion no se si ya vistes en descarga este ejemplo:  de la flor de mario
http://www.comunidadgm.org/index.php?page=64
no se fijate bien en los eventos de keyboard left y rigth y los eventos create del objeto de tu personaje y el de la bola o lo que dispare :
evnto create personaje:// como lo mas importante  a parte del codigo que tengas es colocar
dir=0; //indica que tu personaje ve a la derecha
disparo=true;// inicializa en que si apretas la tecla para disparar funciona porque es verdadero

Ahoara en el envento keyboard left
//colocas que tu personaje cambia de sprite  y todo tu codigo
//pero a demas debes colocar
dir=180;// aqui especificas que cuando tu personaje ve a la izq dir=180 lo contrario a que si ves a ala derecha y en keyboard rigth dir=0;

Ahoara en el envento create de tu disparo:

direction=personaje.dir// direction es una variable local alude a la direccion que ve tu personaje si 0 ? 180 y dir es como una auxiliar de tu personaje no se te olvide colocarla

speed = 10;//velocidad del disparo

if (direction=90) sprite_index = disparoder;//te tira el disparo a la derecha ,sino prueba colocar 0 en vez de 90

if (direction=180) sprite_index =disparizq;//te tira el disparo a la izquierda

alarm[0]=80;// el tiempo que durara antes que se cumpla la alarma que es destuirce.



espero te sirva esto si no ve mejor el ejemplo y los codigos !!!.







Cita de: van OMQ en Noviembre 24, 2009, 12:23:16 AM
bueno yo tenia la misma interrogante pero en el foro me dieron la solucion no se si ya vistes en descarga este ejemplo:  de la flor de mario
http://www.comunidadgm.org/index.php?page=64
no se fijate bien en los eventos de keyboard left y rigth y los eventos create del objeto de tu personaje y el de la bola o lo que dispare :
evnto create personaje:// como lo mas importante  a parte del codigo que tengas es colocar
dir=0; //indica que tu personaje ve a la derecha
disparo=true;// inicializa en que si apretas la tecla para disparar funciona porque es verdadero

Ahoara en el envento keyboard left
//colocas que tu personaje cambia de sprite  y todo tu codigo
//pero a demas debes colocar
dir=180;// aqui especificas que cuando tu personaje ve a la izq dir=180 lo contrario a que si ves a ala derecha y en keyboard rigth dir=0;

Ahoara en el envento create de tu disparo:

direction=personaje.dir// direction es una variable local alude a la direccion que ve tu personaje si 0 ? 180 y dir es como una auxiliar de tu personaje no se te olvide colocarla

speed = 10;//velocidad del disparo

if (direction=90) sprite_index = disparoder;//te tira el disparo a la derecha ,sino prueba colocar 0 en vez de 90

if (direction=180) sprite_index =disparizq;//te tira el disparo a la izquierda

alarm[0]=80;// el tiempo que durara antes que se cumpla la alarma que es destuirce.



espero te sirva esto si no ve mejor el ejemplo y los codigos !!!.


Pues si, eso es lo correcto.

Pero haber Soujiro, no veo el por qu? la direcci?n de la bala cambie cada vez que cambie el personaje de direcci?n, ya que la direcci?n se plantea en el Create y no en el step, por lo que solo se le declarar? 1 vez la direcci?n: al crearse.
Lo digo por que as? he hecho yo mis "disparos" y dem?s cosas y me ha salido todo bien.
Si lo pusiera en Step la cosa cambia  :-\

Perdon, pense que era en step. En ese caso solo se moveria 5 pixeles una sola vez, asi que de todas maneras no es correcto. No se porque decis que declaras la direccion, en ningun momento lo haces.

#8 Noviembre 24, 2009, 02:44:18 AM Ultima modificación: Noviembre 24, 2009, 03:00:58 AM por knd144
 :o cierto
no lo habia visto  ???

Siento haberte sugestionado  :-[

forma correcta:

en create:
Citar
if personaje.direcion="derecha"
{
 hspeed=5
}
else
{
 hspeed=-5
}


de esta manera su desplazamiento horizantal ser? de velocidad 5 hacia la derecha si el jugador mira a la derecha, o hacia la izquierda si mira a la izquierda.

corregido ???  ???  ???  :'(

De nuevo, lo correcto ser?a:

if personaje.direcion="derecha"
{
  hspeed=5
}
else
{
  hspeed=-5
}

muchisimas gracias a todos al final lo he conseguido  :D