hola makeros... tengo un peque?o problema con un juego de plataformas que estoy haciendo, es un c?digo de perseguir que encontr? y lo edit?, lo malo es que el enemigo no salta cuando un objeto solido se encuentra en frente de ?l, sino que se queda con el sprite de caminar y no salta...
por favor ay?denme, ac? esta el c?digo
EVENTO CREATE:
image_speed = 0.25
eso es para la velocidad de la animaci?n.
EVENTO STEP:
{
gravity_direction = 270;
if place_free(x,y+1)
gravity = 0.7
else
gravity = 0;
// limit the speed
if (vspeed > 12) vspeed = 12;
}
esto es para la gravedad del enemigo
if instance_exists(spacer)
{
if x< spacer.x and x< view_xview+320
{
image_xscale = 1
if sprite_index = sprbadstand {sprite_index = sprbadwalk;}
if place_free(x+3,y){ x+=2.5}
if not place_free(x,y+1)and place_free(x+8,y+1)
{vspeed-=10; if place_free(x+3,y){ x+=2.5}}}
if x> spacer.x and x> view_xview+1
{
image_xscale = -1
if sprite_index = sprbadstand {sprite_index = sprbadwalk;}
if place_free(x-3,y){ x-=2.5}
if not place_free(x,y+1)and place_free(x-8,y+1)
{vspeed-=10; if place_free(x-3,y){ x-=2.5}}}
}else{x = 0;sprite_index = sprbadstand;}
este es el c?digo de perseguir, lo que no se es como detener al personaje cuando este fuera de la view, y ademas no salta cuando un objeto esta al frente del enemigo, lo unico tambi?n que no me gusta de este codigo es que el enemigo se acerca mucho al personaje quedando en la misma posici?n X.
if x = 0 {sprite_index = sprbadstand}
if vspeed < 0 {sprite_index = sprbadjump}
esto es para que el personaje cambie de sprite cuando esta imovil (pero no me sirve XD) y para cuando el personaj salte cambie de sprite.
EVENTO COLISION CON EL OBJETO SOLIDO:
if (vspeed > 0 and not place_free(x,y+vspeed))
{
move_contact(270);
vspeed = 0;
}
esto es para que el enemigo se detenga en el piso con la gravedad
if sprite_index = sprbadjump
{sprite_index = sprbadstand}
y esto es para cambiar el sprite de saltar por el de pie.
Mmmm me parece que es mi codigo.
si recuerdo este es la parte que hace que salte al encontrar un hueco
if not place_free(x,y+1)and place_free(x+8,y+1)
{vspeed-=10; if place_free(x+3,y){ x+=2.5}}}
Prueva colocando asi.
if not place_free(x,y+1) and place_free(x+8,y+1) and place_free(x+3,y)
{vspeed-=10; if place_free(x+3,y){ x+=2.5}}}
else
{if not place_free(x,y+1) and place_meeting(x+3,y,(other.solid))
{vspeed-=10; if place_free(x+3,y){ x+=2.5}}}
en realidad me sigue con el mismo problema...
if instance_exists(spacer)
{
if x< spacer.x and x< view_xview+320
{
image_xscale = 1
if sprite_index = sprbadstand {sprite_index = sprbadwalk;}
alarm[0]= 1
if place_free(x+3,y){ x+=2.5}
if not place_free(x,y+1) and place_free(x+8,y+1) and place_free(x+3,y)
{vspeed-=10; if place_free(x+3,y){ x+=2.5}}}
else
{if not place_free(x,y+1) and place_meeting(x+sprite_width,y,objsolidparent)
{vspeed-=10; if place_free(x+3,y){ x+=2.5}}}
if x> spacer.x and x> view_xview+1
{
image_xscale = -1
if sprite_index = sprbadstand {sprite_index = sprbadwalk;}
alarm[0]= 1
if place_free(x-3,y){ x-=2.5}
if not place_free(x,y+1) and place_free(x-8,y+1) and place_free(x-3,y)
{vspeed-=10; if place_free(x-3,y){ x-=2.5}}}
else
{if not place_free(x,y+1) and place_meeting(x-sprite_width,y,objsolidparent)
{vspeed-=10; if place_free(x-3,y){ x-=2.5}}}
}else{speed = 0;sprite_index = sprbadstand;}
ahora cuando camina el personaje solo salta el objeto solido de enfrente cuando este camina hacia la izquierda, osea reconoce solo el objeto solido cuando ?ste esta a la izquierda, pero a la dercha no :(
{if not place_free(x,y+1) and place_meeting(x+sprite_width,y,objsolidparent)
{vspeed-=10; if place_free(x+3,y){ x+=2.5}}}
esto indicar?a tal vez que el objeto enemigo no reconoce o no alcanza a reconocer l objeto cuando esta a la derecha, es a lo mejor por el ancho del sprite.
lo malo es que sigue con los mismos problemas del sprite, y sigue accionandose l codigo fuera de la view.