Buenos días, saludos amigos, pues de nuevo aqui molestando ???
tengo una duda, estoy realizando un juego Isometrico donde el personaje tendrá que disparar en la dirección que se mueve o en la que esta mirando, pero todo esto de la isometria es nueva para mi y termino enredandome con las posiciones y movimientos. Les muestro como estoy moviendo mi personaje. (http://s2.subirimagenes.com/privadas/previo/thump_1766611sin-ttulo.png)
//Mover Personaje isometrico
switch (keyboard_key)
{
case vk_up :Up.image_speed= 0.2;Personaje1_obj.x+=4;Personaje1_obj.y=2;Personaje1_obj.sprite_index=Up;break;
case vk_down:Down.image_speed=0.2;Personaje1_obj.x-=4;Personaje1_obj.y+=2;Personaje1_obj.sprite_index=Down;break;
case vk_right:rigth.image_speed=0.2;Personaje1_obj.x+=4;Personaje1_obj.y+=2;Personaje1_obj.sprite_index=rigth;break;
case vk_left:Left.image_speed=0.2;Personaje1_obj.x-=4;Personaje1_obj.y-=2;Personaje1_obj.sprite_index=Left;break;
case vk_nokey: Personaje1_obj.image_index=3;break;
//combinando teclas
}
Pues de verdad estoy hecho un lío y no puedo hacer que dispare hacia donde debe xD, alguien tiene la solución.
y si pudieran decirme donde puedo encontrar información sobre juegos isometricos ya que parece escasa.
gracias por su ayuda y paciencia.
if keyboard_check( ord("Z") )
{
var Dir, In;
Dir = point_direction(Personaje1_obj.xpreviews,Personaje1_obj.ypreviews,Personaje1_obj.x,Personaje1_obj.y);
In = instance_create(x,y,Obj_Disparo);
In.speed = 8;
In.direction = Dir;
}
Fijate si te ayuda en algo -.-
al precionar la tecla Z me marca el siguiente error:
ERROR in
action number 1
of Step Event
for object Control_obj:
Error in code at line 18:
Dir = point_direction(Personaje1_obj.xpreviews,Personaje1_obj.ypreviews,Personaje1_obj.x,Personaje1_obj.y);
^
at position 40: Unknown variable xpreviews
Mejor te exploco el codigo
keyboard_check( X ) es para comprobar si se esta tocando X tecla, por ejemplo: vk_enter, vk_space, vk_left, etc
En caso que quieras hacerlo con algunas de las letras no podes poner "vk_z" porque no existe! solo pone ord( X ) sindo X un texto porlo que tendras que estar entre comillas "asi" colocando la teclas deciada en mayuscula asi:
"Z"
quedando:
ord("Z");
"var" es para que las variables que se creen en este codigo no afecten a otras. en pocas palabras son variables auxiliares.
point_direction(X1, Y1, X2, Y2) cancula la direccion entre un punto y otro.
instance_create(x,y,Obj_Disparo) crea una instancia del objeto "Obj_Disparo", obviamente es un nombre que invente por lo que tenes que suplantarlo por el nombre del objeto que es disparado.
speed = 8; Asigna la velosidad de una instancia
direction = Dir; Asigna la direccion de una instancia
tu problema de seguro es que no tenes un objeto llamado "Personaje1_obj"
cambia esa parte del codigo por el nombre del objeto que es el personaje principal de tu juego.
a un consejo -no te combiene hacer que un objeto controle todos los movimientos del jugado, mejor hacelo dentro del El. Eso si vas a tener que modificar un poco tus codigos :-* -
Suerte
Gracias por su ayuda, con un poco de el código que me dieron y macheteando el manual logré crear los disparos correctos en las direcciones adecuadas. Muchísimas gracias y disculpen si soy muy preguntón. :-[