Noviembre 17, 2012, 08:40:24 PM Ultima modificación: Noviembre 17, 2012, 10:11:32 PM por gamemastertom
Hola a todos, espero me puedan ayudar:

En mi juego de disparos con vista aerea, el personaje dispara con el mouse (y el cursor es la mira).Mis problemas son 2:

1 - Como le doy un delay a las balas, para q no salgan todas en una linea continua?

2 - Las balas tienen una forma ovalada, como hago q roten para q pareciera q van hacia donde fueron disparadas? en lugar de ser un ovalo vertical q se mueve

Gracias de antemano por la ayuda.
La vida es como un videojuego...excepto que sin continues...

el angulo de la bala lo cambiás poniendo en step:
[gml]image_angle=direccion[/gml]
y el delay de las balas lo podés hacer con una alarma que (si estas apretando la tecla de disparo) cree el objeto disparo
en la alarm
[gml]if keyboard_check_direct(vk_space) ///si precionás espacio
{instance_create(objbala,x,y)} ///crea la el disparo (cambiar objbala por el nombre de tu disparo :P)
alarm[0]=10///regulas con este numero la frecuencia con la que salen las balas[/gml]

mmm esa alarma tendria q ponerla en el personaje en step? no la estoy entendiendo mucho
La vida es como un videojuego...excepto que sin continues...

un método más sencillo sin alarmas

create del personaje:
delay = 0;

evento disparo (mouse click):
if (delay == 0) {instance_create(x, y, obj_bala); delay = 30;}

step:
if (delay > 0) delay -= 1;

al poner 30 al disparar, que son los steps que duran 1 segundo predefinido, disparará 1 bala por segundo como mucho. Si pones 15, 2 balas por segundo. Si pones 60, 1 bala cada 2 segundos, etc.

Gracias DarkRuler, si me sirvio.

Ahora solo me falta hacer q las balas cambien su angulo respecto de hacia donde van.
La vida es como un videojuego...excepto que sin continues...

eso te lo dijo Pikamaker, en step, image_angle = direction (él puso direccion,  falta la t, pero es eso), ah, para que esto funcione, asegúrate que el SPRITE de la bala mira a la derecha, siempre deben mirar los sprites a la derecha para poder trabajar bien con image_angle

No siempre tienen por qué mirar a la derecha, si miran arriba sería cuestión de restarle 90 a direction y si mira abajo sumarle 90




Gracias a todos, ahora la ametralladora del personaje se ve mucho mejor.

Problema SOLUCIONADO
La vida es como un videojuego...excepto que sin continues...

Cita de: Texic en Noviembre 17, 2012, 10:07:10 PM
No siempre tienen por qué mirar a la derecha, si miran arriba sería cuestión de restarle 90 a direction y si mira abajo sumarle 90

pero es más fácil que todos tus sprites miren a la derecha, así trabajas sabiendo que la dirección 0 es efectivamente la 0, la 90 es la 90, etc etc. Lo contrario es una complicación innecesaria ^^

Obviamente sería una complicación innecesaria, pero se puede hacer, sólamente estaba refutando tu argumento
Cita de: DarkKRuleR en Noviembre 17, 2012, 10:01:25 PM
siempre deben mirar los sprites a la derecha para poder trabajar bien con image_angle
Ya que como verás aunque no miren a la derecha se puede trabajar bien con image_angle, es cuestión de igualar la orientación del sprite a 0 (restando 90 si es 90) xD
Hay que abrir la mente a todas las posibilidades y no cerrarse a "Esto tiene que hacerse así", es la clave para poder resolver los problemas de diferentes puntos de vista y no tratar de hacerlo desde uno solo (que podría no llevar al resultado más óptimo)




Una pregunta, para que sirve la función delay? Me corroe la duda (aparte de que me podría servir para un nuevo juego que tengo en mente  8) jejeje)
Jugador de muchos juegos y creador de algunos ;)
¿Buscas un guionista? Haz click aquí

Texic, tienes toda la razón, eso es aceptable y correcto, complicarse pero correcto xD
Marron, el delay que yo puse es una variable llamada Delay para que el algoritmo de disparo funcione, se le podría haber puesto cualquier otro nombre ^^ es una simple variable numérica. Si fuera una función sería delay(), o delay(blabla), etc