Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: TheSquirrel en Febrero 21, 2010, 01:31:33 AM

Título: Problema con un codigo :l
Publicado por: TheSquirrel en Febrero 21, 2010, 01:31:33 AM
Hola miren primero este es el codigo con el cual tengo problemas :
Citarswitch(round(point_direction(x,y,mouse_x,mouse_y)/90)*90){
case(0):sprite_index=Ladron_ladoder_caminando;break;

keyboard_check(vk_right)
sprite_index = Ladron_ladoder_caminando
keyboard_check(vk_left)
sprite_index = Ladron_ladoder_caminando
keyboard_check(vk_up)
sprite_index = Ladron_ladoder_caminando
keyboard_check(vk_down)
sprite_index = Ladron_ladoder_caminando

case(90):sprite_index=Ladron_espalda_quieto;break;
case(180):sprite_index=Ladron_ladoizq_quieto;break;
case(270):sprite_index=Ladron_frente_quieto;break;
}


El Codigo lo que hace es que el Sprite miren donde esta el Mouse (derecha , izquierda , arriba y abajo)Pero en este caso , yo quiero que cuando yo aprete derecha , izquierda , arriba y abajo , el personaje se cambien a "Ladron_ladoder_caminando" (como sale arriba) , pero quiero que eso pase solo cuando este el mouse en es grado


Como lo soluciono?
Título: Re: Problema con un codigo :l
Publicado por: Wadk en Febrero 21, 2010, 02:13:00 AM
key=keyboard_check(vk_right)||keyboard_check(vk_left)||keyboard_check(vk_up)||keyboard_check(vk_down);
switch(round(point_direction(x,y,mouse_x,mouse_y)/90)*90){
case(0):sprite_index=Ladron_ladoder_caminando;if(key){sprite_index=Ladron_ladoder_caminando;}break;
case(90):sprite_index=Ladron_espalda_quieto;if(key){sprite_index=Ladron_espalda_caminando;}break;
case(180):sprite_index=Ladron_ladoizq_quieto;if(key){sprite_index=Ladron_ladoizq_caminando;}break;
case(270):sprite_index=Ladron_frente_quieto;if(key){sprite_index=Ladron_frente_caminando;}break;
}
Título: Re: Problema con un codigo :l
Publicado por: TheSquirrel en Febrero 21, 2010, 02:31:26 AM
Aun tengo problemas con el codigo , por que cuando pong el mouse a la derecha el mono cambia a el sprite caminado pero no tengo que apreta , arriba abajo , izqueirda o derehca ademas que cuando los apreto no se mueve
Título: Re: Problema con un codigo :l
Publicado por: Wadk en Febrero 21, 2010, 03:15:37 AM
Lo primero fue un error m?o, ahora anda bien:
key=keyboard_check(vk_right)||keyboard_check(vk_left)||keyboard_check(vk_up)||keyboard_check(vk_down);
switch(round(point_direction(x,y,mouse_x,mouse_y)/90)*90){
case(0):sprite_index=Ladron_ladoder_quieto;if(key){sprite_index=Ladron_ladoder_caminando;}break;
case(90):sprite_index=Ladron_espalda_quieto;if(key){sprite_index=Ladron_espalda_caminando;}break;
case(180):sprite_index=Ladron_ladoizq_quieto;if(key){sprite_index=Ladron_ladoizq_caminando;}break;
case(270):sprite_index=Ladron_frente_quieto;if(key){sprite_index=Ladron_frente_caminando;}break;
}

Y nunca pediste un c?digo para que se moviera, pero bueno ac? te dejo uno, ponelo abajo de el otro:

switch(keyboard_check(vk_up)+keyboard_check(vk_down)*2+keyboard_check(vk_left)*4+keyboard_check(vk_right)*8){
case(1):move_contact_solid(90,velocidad);break;
case(2):move_contact_solid(270,velocidad);break;
case(4):move_contact_solid(180,velocidad);break;
case(8):move_contact_solid(0,velocidad);break;
case(5):move_contact_solid(135,velocidad);break;
case(9):move_contact_solid(45,velocidad);break;
case(6):move_contact_solid(225,velocidad);break;
case(10):move_contact_solid(315,velocidad);break;
}

Y en create:
velocidad=4;
el 4 lo pod?s cambiar para que el personaje se mueva m?s r?pido o m?s lento.
Título: Re: Problema con un codigo :l
Publicado por: TheSquirrel en Febrero 22, 2010, 10:16:55 PM
Hola , de nuevo tengo problemas.

Bueno los problemas son los siguientes:
-Aun no se activa el Sprite cuando apreto la tecla derecha , arriba , abajo , izquierda ..

-el movimiento esta bien , pero tambien se puede Mover en diagonal , osea si apreto a la misma vez la derecha y arriba .. se mueve diagonal , quiero que solo se mueva en la cuatro direcciones (derecha , arriba , izquierda , abajo)

Por favor ayuda!
Título: Re: Problema con un codigo :l
Publicado por: Wadk en Febrero 23, 2010, 07:05:41 PM
Hmmm... no s? por que no cambia el sprite, pero para que no se mueva en diagonal, camb? el segundo c?digo por el siguiente:
switch(keyboard_check(vk_up)+keyboard_check(vk_down)*2+keyboard_check(vk_left)*4+keyboard_check(vk_right)*8){
case(1):move_contact_solid(90,velocidad);break;
case(2):move_contact_solid(270,velocidad);break;
case(4):move_contact_solid(180,velocidad);break;
case(8):move_contact_solid(0,velocidad);break;
case(5):move_contact_solid(180,velocidad);break;
case(9):move_contact_solid(90,velocidad);break;
case(6):move_contact_solid(270,velocidad);break;
case(10):move_contact_solid(0,velocidad);break;
}


El primer problema debe ser por alguna otra parte de tu juego, no veo errores en el c?digo que puse antes.