Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: AzTaki-De en Diciembre 29, 2018, 05:12:07 PM

Título: Error visual con distance_to_object
Publicado por: AzTaki-De en Diciembre 29, 2018, 05:12:07 PM
Buenas alguien podria orientarme? sucede que el enemigo cuando llega a la posicion del jugador se queda dando vueltas de izquierda a derecha y se ve re mal  aqui dejo el codigo para poder corregirlo
[gml]if distance_to_object(enemigo) < 400  and enemigo.image_alpha = 1
{
if enemigo.x+5 < x
{
    sprite_index = spr_enemigo_craneo_camin_izq
    x -= 2.5
    image_speed = 0.16
}
else
{
    sprite_index = spr_enemigo_craneo_camin_der
    x += 2.5
    image_speed = 0.16
}
}[/gml]
Título: Re:Error visual con distance_to_object
Publicado por: AzTaki-De en Diciembre 29, 2018, 05:14:29 PM
aclarar que en el codigo del ENEMIGO persigue al "enemigo"(que viene siendo el personaje dentro de su codigo) esto lo hice asi para que el enemigo persiguiera al personaje mas cercano a el
Título: Re:Error visual con distance_to_object
Publicado por: Jucarave en Diciembre 29, 2018, 06:08:08 PM
Si tuviera que adivinar tiene que ver con tus condiciones en el if/else:

Supongamos que la posición del enemigo es enemigo.x+7.
por lo tanto la condición if enemigo.x+5 < x se cumple.
así que el enemigo se mueve x -= 2.5; y su nueva posición es enemigo.x+4.5

ahora en el próximo frame, se prueba de nuevo la condición:

if enemigo.x+5 < x? no, en este caso x  = enemigo.x+4.5
por lo tanto entra en la condición del else
así que el enemigo se mueve x += 2.5; y su nueva posición es enemigo.x+7 nuevamente,

En el próximo frame vuelve a moverse a 4.5, luego a 7 y así, ese es el efecto que te esta sucediendo.

Este es tu problema, para solucionarlo de forma rápida podrías probar:

[gml]
if distance_to_object(enemigo) < 400  and enemigo.image_alpha = 1
{
if enemigo.x+5 < x
{
    sprite_index = spr_enemigo_craneo_camin_izq
    x -= 2.5
    image_speed = 0.16
}
else if enemigo.x-5 > x // Esta linea de código es el cambio
{
    sprite_index = spr_enemigo_craneo_camin_der
    x += 2.5
    image_speed = 0.16
}
}
[/gml]

Saludos
Título: Re:Error visual con distance_to_object
Publicado por: Taki-A en Diciembre 29, 2018, 09:00:19 PM
Es como tú dices el error era eso, ahora se ve mejor muchas gracias :D
Cita de: Jucarave en Diciembre 29, 2018, 06:08:08 PM
Si tuviera que adivinar tiene que ver con tus condiciones en el if/else:

Supongamos que la posición del enemigo es enemigo.x+7.
por lo tanto la condición if enemigo.x+5 < x se cumple.
así que el enemigo se mueve x -= 2.5; y su nueva posición es enemigo.x+4.5

ahora en el próximo frame, se prueba de nuevo la condición:

if enemigo.x+5 < x? no, en este caso x  = enemigo.x+4.5
por lo tanto entra en la condición del else
así que el enemigo se mueve x += 2.5; y su nueva posición es enemigo.x+7 nuevamente,

En el próximo frame vuelve a moverse a 4.5, luego a 7 y así, ese es el efecto que te esta sucediendo.

Este es tu problema, para solucionarlo de forma rápida podrías probar:

[gml]
if distance_to_object(enemigo) < 400  and enemigo.image_alpha = 1
{
if enemigo.x+5 < x
{
    sprite_index = spr_enemigo_craneo_camin_izq
    x -= 2.5
    image_speed = 0.16
}
else if enemigo.x-5 > x // Esta linea de código es el cambio
{
    sprite_index = spr_enemigo_craneo_camin_der
    x += 2.5
    image_speed = 0.16
}
}
[/gml]

Saludos