#15 Octubre 12, 2017, 12:12:17 AM Ultima modificación: Octubre 12, 2017, 12:13:57 AM por royer11
 :-[  si, en esa parte es donde tengo dificultades, el sprite no cambia y solamente se que queda estatico y con el sprite de caminando

Vale, xD. Cuando el enemigo esté a X distancia del jugador, le detenemos y hacemos que cambie al sprite de ataque en la dirección en que esté, ¿verdad?
[gml]
var donde = oPlayer.x - x; //Calculamos la distancia horizontal entre el player y el enemigo
//oPlayer es el nombre del jugador
if(abs(donde) >= 26) //Si la distancia es menor que 26
{
    donde = sign(donde); //Obtenemos la dirección en la que debe mirar (1: derecha, -1: izquierda)
    hspeed = 0; //Detenemos al enemigo
    if(donde == 1) //Si debe mirar a la derecha
        sprite_index = sAtacando_derecha; //Mira a la derecha
    else //De lo contrario
        sprite_index = sAtacando_izquierda; //Mira a la izquierda
}
else //De lo contrario
{
    hspeed = choose(-1.3, 1.3); //Andar a la derecha o a la izquierda aleatoriamente.
}
[/gml]
alaberga regué el café.

BA:STFW&RTFM

el codigo funciona, cuando comienzo el juego, el enemigo ya esta con el sprite de atake "he tratado de cambiar los valores de distancia ", ahora cuando el jugador esta a la derecha del personaje, cambia el sprite del enemigo a caminar y el problema es que no se mueve "esta estático",

--> si el obj del personaje "jugador" esta a la izquierda del enemigo, este enemigo esta estático con el sprite de atake y ahora cuando muevo al personaje unos 3 pasos mas del enemigo,ahora el enemigo cambia repentinamente de sprite a caminar pero como dije, esta estático.

xDXdXd, ¡ando medio dormido! Lo siento, fue mi error.
[gml]
var donde = oPlayer.x - x; //Calculamos la distancia horizontal entre el player y el enemigo
//oPlayer es el nombre del jugador
if(abs(donde) <= 26) //Si la distancia es menor que 26 (ÉSTE ERA EL PRIMER ERROR)
{
    donde = sign(donde); //Obtenemos la dirección en la que debe mirar (1: derecha, -1: izquierda)
    hspeed = 0; //Detenemos al enemigo
    if(donde == 1) //Si debe mirar a la derecha
        sprite_index = sAtacando_derecha; //Mira a la derecha
    else //De lo contrario
        sprite_index = sAtacando_izquierda; //Mira a la izquierda
}
else //De lo contrario
{
    hspeed = choose(-1.3, 1.3); //Andar a la derecha o a la izquierda aleatoriamente.
    if(sign(hspeed) == 1) //FALTABA ESTO PARA REGRESAR AL SPRITE DE CAMINAR
        sprite_index = sCaminando_derecha;
    else
        sprite_index = sCaminando_izquierda;
}
[/gml]
A ver si ésta si sirve, xD.
alaberga regué el café.

BA:STFW&RTFM

eres un crack, mil disculpas por haberte entretenido, bueno el enemigo funciona, ahora cuando me acerco cambia de sprite al modo atake, solamente que [gml]hspeed = choose(-1.3, 1.3[/gml] , creo que hace que se mueva sin una direccion fija , quiero decir que cambia sprite de izquierda a derecha y no tiene direccion, no avanza

[gml]
var donde = oPlayer.x - x; //Calculamos la distancia horizontal entre el player y el enemigo
//oPlayer es el nombre del jugador
if(abs(donde) <= 26) //Si la distancia es menor que 26 (ÉSTE ERA EL PRIMER ERROR)
{
    donde = sign(donde); //Obtenemos la dirección en la que debe mirar (1: derecha, -1: izquierda)
    hspeed = 0; //Detenemos al enemigo
    if(donde == 1) //Si debe mirar a la derecha
        sprite_index = sAtacando_derecha; //Mira a la derecha
    else //De lo contrario
        sprite_index = sAtacando_izquierda; //Mira a la izquierda
}
else //De lo contrario
{
    if(hspeed == 0)
    {
        hspeed = choose(-1.3, 1.3); //Andar a la derecha o a la izquierda aleatoriamente.
        if(sign(hspeed) == 1) //FALTABA ESTO PARA REGRESAR AL SPRITE DE CAMINAR
            sprite_index = sCaminando_derecha;
        else
            sprite_index = sCaminando_izquierda;
    }
}
[/gml]
alaberga regué el café.

BA:STFW&RTFM

 :D :D :D :D :D 

muchas gracias  NiuWeb    , me encuentro realmente agradecido, ahora esta perfecto, muchas gracias nuevamente