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]
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
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
Es como tú dices el error era eso, ahora se ve mejor muchas gracias :DCita 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