En este caso serían lanzas y no balas ya que se trata de un juego estilo ghouls N Goblins.
Mi problema es que cuando disparo una lanza en una dirección e inmediatamente disparo otra en la dirección contraria, todas las que se encuentran en pantalla cambian su sprite de derecha a izquierda (o al revés). Cómo se hace para cambiar el sprite en todo su trayecto sin que el sprite se vea afectado por nada?
Este es el código que estoy usando para ello y que tiene ese defecto:
//Spear:
if (Key_Spear) and (anime_throw = 1)
{
spear = 1;
anime_throw = 0;
alarm[0] = 2;
hsp = 0;
if (grounded)
{
if (spear_rate = 1)
{
if (face_right) {spear_right = action_create_object_motion(obj_spear,x-40,y+10,40,0); obj_spear.image_xscale = 1;}
if (face_left) {spear_left = action_create_object_motion(obj_spear,x+40,y+10,40,180); obj_spear.image_xscale = -1;}
spear_rate = 0;
alarm[1] = 5;
}
}
else
{
if (spear_rate = 1)
{
if (face_right) {spear_right = action_create_object_motion(obj_spear,x-30,y+10,40,0); obj_spear.image_xscale = 1;}
if (face_left) {spear_left = action_create_object_motion(obj_spear,x+30,y+10,40,180); obj_spear.image_xscale = -1;}
spear_rate = 0;
alarm[1] = 5;
}
}
}
Otro error que tengo es a la hora de crear un efecto de polvo cuando la lanza choca con una pared, cuando viaja a la derecha el polvo sale en las coordenadas que le he asignado yo (para que sea en la punta) pero si se mueve hacia la izquierda el sprite se invierte (image.xscale = -1) la nubecita de polvo sale detrás y no en la punta porque mantiene las coordenadas de antes.
(http://img585.imageshack.us/img585/725/qf3h.png)
¿Hay alguna manera de hacer esto mediante código o simplemente debo añadir otro objeto para la lanza en la otro dirección cos su propio código?
Gracias
No quería hacerlo, pero finalmente he tenido que crear otro objeto para la lanza en dirección izquierda con el sprite invertido y escribir sus propias propiedades... de esta manera pesa el doble pero por código no tenía ni idea de como arreglarlo
Parece que ya lo solucionaste, en todo caso usar un step event en el objeto lanza que controle de forma autonoma la direccion del objeto y el sprite de la siguiente manera:
En el step evento de la lanza:
image_angle = direction;
Para solucionar el efecto que no sale en la posicion correcta, usas la variable direction y segun la direction sera la posicion donde tendra lugar el efecto grafico deseado.