Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: lfcesar en Enero 16, 2012, 09:07:07 AM

Título: mover en una direccion en angulo
Publicado por: lfcesar en Enero 16, 2012, 09:07:07 AM
hola como muevo en las direcciones en angulo
si estoy llendo hacia abajo y giro hacia la derecha que se valla hacia la derecha pero volteando poco por poco con angulo
aca mi codigo pero no me sale


dir1  = almacedo el angulo donde estaba
dir2 = almacena el angulo donde girara
[gml]   if(iniciar=true)
    {
           
          if(dir1=90  and  dir2=180)
           {
                if ir<=90
                ir=90;
               
                if (ir<180)
                ir+=angulogiro;
                 motion_set(ir,velocidad);     
           }
           
          if(dir1=90  and  dir2=0)
           {
                if ir>=90
                ir=90;
               
                if (ir>0)
                ir-=angulogiro;
                motion_set(ir,velocidad);     
           }
           
           if(dir1=270  and  dir2=180)
           {
                if ir>=270
                ir=270;
               
                if (ir>180)
                ir-=angulogiro;
                 motion_set(ir,velocidad);     
           }
         
           if(dir1=270  and  dir2=0)
           {
                if ir<=270
                ir=270;
               
                if (ir<360 and ir>260)
                ir+=angulogiro;
                if ir=360;
                ir=0;
                motion_set(ir,velocidad);       
           } 
          //-------------------------------------
           if(dir1=0  and  dir2=90)
           {
                if ir<=0
                ir=0;
               
                if (ir<90)
                ir+=angulogiro;
                motion_set(ir,velocidad);       
           }   
           if(dir1=0  and  dir2=270)
           {
                if ir>360
                ir=360;
               
                if (ir>270)
                ir-=angulogiro;
                motion_set(ir,velocidad);       
           }
           if(dir1=180  and  dir2=90)
           {
                if ir>180
                ir=180;
               
                if (ir>90)
                ir-=angulogiro;
                motion_set(ir,velocidad);       
           }   
           if(dir1=180  and  dir2=270)
           {
                if ir<180
                ir=180;
               
                if (ir<270)
                ir+=angulogiro;
                motion_set(ir,velocidad);       
           }                                                   
    }   [/gml]
Título: Re: mover en una direccion en angulo
Publicado por: elviskelley en Enero 16, 2012, 01:38:24 PM
//para la direccion usalo en el event de teclas.
direction= (0=derecha, 90=arriba, 180=izquierda, 270=abajo)
//para que voltee el angulo.
if imagen_angle <direction
{image_angle+=5;}
if image_angle > direction
{image_angle-=5;}
Título: Re: mover en una direccion en angulo
Publicado por: Jucarave en Enero 16, 2012, 02:35:51 PM
No le? tu c?digo (mucho) pero igual dices que no funciona, as? que har? uno nuevo (que ya prob?):

[gml]
//EVENTO STEP
if (keyboard_check_pressed(vk_left)){
    dirtogo = 180;
}

if (keyboard_check_pressed(vk_up)){
    dirtogo = 90;
}

if (keyboard_check_pressed(vk_right)){
    if (dirtogo == 270){ dirtogo = 360; exit; } //Cuando va de 270 a 0
    dirtogo = 0;
}

if (keyboard_check_pressed(vk_down)){
    if (direction == 0){ direction = 356; } //Esto para cuando va de 0 a 270
    dirtogo = 270;
}
[/gml]

[gml]
//EVENTO STEP
/*Variables:
dirtogo = direction; //Direcci?n a la que va a girar
*/

if (dirtogo < direction){ direction -= 4; } //4 es la velocidad de giro

if (dirtogo > direction){ direction += 4; }

if (abs(direction-dirtogo)<=4){ //cuando este cerca, se detiene
    direction = dirtogo;
    if (dirtogo = 360){ dirtogo = 0; } //Caso especial cuando va de 270 a 0
}
[/gml]

Y por ultimo si quieres
[gml]
//EVENTO STEP
image_angle = direction;
[/gml]



Cualquier cosa avisas.

Saludos.
Título: Re: mover en una direccion en angulo
Publicado por: lfcesar en Enero 16, 2012, 04:59:16 PM
ME PUEDEN HACER UN EJEMPLITO PORFA =)
Título: Re: mover en una direccion en angulo
Publicado por: Jucarave en Enero 16, 2012, 05:06:17 PM
Ah? tienes... copy paste de lo que te copie arriba, esta en  :GM8:

Saludos :) .

Título: Re: mover en una direccion en angulo
Publicado por: lfcesar en Enero 20, 2012, 03:06:10 AM
gracias me sirvio justo lo que queria
Título: Re: mover en una direccion en angulo
Publicado por: brunoxzx en Enero 20, 2012, 10:44:37 AM
Tambi?n pueden usar este c?digo (que esta en los smart codes de yoyo).
[gml]image_angle=(image_angle+(sin(degtorad(
direction-image_angle))*12));
//cambia el 12 por la velocidad deseada[/gml]

y bueno, ya despues lo puedes usar como dijo Jucarave.
[gml]if (keyboard_check(vk_left)){
    direction=180;
}
if (keyboard_check(vk_right)){
    direction=180;
}
if (keyboard_check(vk_up)){
    direction=90;
}
if (keyboard_check(vk_down)){
    direction=270;
}
[/gml]

Listo, solo pondr?as el c?digo este en end step y quedar?a perfecto :).
[gml]image_angle=(image_angle+(sin(degtorad(
direction-image_angle))*12));[/gml]