Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Sr.Mojon en Junio 23, 2018, 04:16:23 AM

Título: Ayuda
Publicado por: Sr.Mojon en Junio 23, 2018, 04:16:23 AM
necesito que me ayuden en esto yo tengo en mis enemigos el codigo para que eviten las paredes y no se choquen con ellas pero como esta puesto para que los zombies roten y miren siempre al personaje lo de evitar las paredes y meterse por el espacio que les dejo para que entren no lo hacen y se quedan pegados pero si quito los de que roten para que vean a mi personaje todo lo hacen perfecto (lo de evitar las paredes y todo eso), entonces yo quiero es que cuando los zombies estan evitando los muros para entrar a la casa no roten la camara paro el resto del tiempo si lo hagan les voy a dejar el codigo del evento step del zombie que es donde esta todo el codigo relacionado con eso:


///seguimiento
if (distance_to_point(obj_jugador.x, obj_jugador.y,) < 200000)

{
  // Perseguir evitando las paredes. La velocidad aumenta
  image_speed = 0.2;
  mp_potential_step(obj_jugador.x, obj_jugador.y, 1, false);
  //                                              ^
  //                                          velocidad
}

// rotacion al perseguirme
image_angle = direction;
// vidas
if (vidas<1) instance_destroy();
Título: Re:Ayuda
Publicado por: Clamud en Junio 24, 2018, 07:26:55 PM
El problema es que al rotar la máscara de colisión cambia y a veces la función mp_potential_step trata de buscar una salida desde una posición con colisión.
En el evento Create declara una variable para controlar el ángulo del sprite
[gml]
angulo = direction;
[/gml]
En el evento Step sustituye la variable image_angle por angulo.
Y en el evento Draw dibuja el sprite de esta forma
[gml]
draw_sprite_ext( sprite_index, image_index, x, y, 1, 1, angulo, c_white, 1 );
[/gml]