Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: fab62 en Noviembre 12, 2009, 12:40:56 AM

Título: problema con perseguir
Publicado por: fab62 en Noviembre 12, 2009, 12:40:56 AM
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.
Título: Re: problema con perseguir
Publicado por: elviskelley en Noviembre 12, 2009, 06:02:08 AM
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}}}
Título: Re: problema con perseguir
Publicado por: fab62 en Noviembre 12, 2009, 10:41:28 PM
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.