Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: bochaPastore en Agosto 16, 2017, 03:01:00 PM

Título: [Resuelto]Salto mientras player corre alrededor
Publicado por: bochaPastore en Agosto 16, 2017, 03:01:00 PM
Buenas!

Actualmente tengo a mi jugador corriendo alrededor de un planeta, como si estuviera orbitando.

Lo q quiero lograr, es que el mismo pueda saltar mientras esta "orbitando", el problema es q no se me ocurre como hacerlo

Este es el codigo que tengo actualmente para que corra alrededor:


x = obj_moon.x + lengthdir_x(distance, obj_moon.image_angle * pi/360);
y = obj_moon.y + lengthdir_y(distance, obj_moon.image_angle * pi/360);


Alguna idea de como hacer el salto?

Gracias!



Título: Re:Salto mientras player corre alrededor
Publicado por: Clamud en Agosto 16, 2017, 07:08:07 PM
Esto podría servir
[gml]
g = 0.1; //gravity acceleration
gdir = point_direction( x,y, obj_moon.x, obj_moon.y ); //gravity direction

if( distance <= 123 ) //tocando la luna (123 radio de la luna)
{
   if keyboard_check_pressed( tecla_para_saltar )
   vr = -12; //velocidad radial
}
x += lengthdir_x( vr, gdir ); //movimiento radial
y += lengthdir_y( vr, gdir );

//movimiento horizontal
// ...

vr += g; //efecto de la gravidad

distance = point_distance( x,y, obj_moon.x, obj_moon.y );
if( distance < 123 ){ //personaje atraviesa la superficie
   //acciones para que deje de atravesar la superficie
}
[/gml]

¿Porqué usas la variable image_angle del objeto obj_moon?
Título: Re:Salto mientras player corre alrededor
Publicado por: bochaPastore en Agosto 17, 2017, 02:07:15 PM
Cita de: Clamud en Agosto 16, 2017, 07:08:07 PM
Esto podría servir
[gml]
g = 0.1; //gravity acceleration
gdir = point_direction( x,y, obj_moon.x, obj_moon.y ); //gravity direction

if( distance <= 123 ) //tocando la luna (123 radio de la luna)
{
   if keyboard_check_pressed( tecla_para_saltar )
   vr = -12; //velocidad radial
}
x += lengthdir_x( vr, gdir ); //movimiento radial
y += lengthdir_y( vr, gdir );

//movimiento horizontal
// ...

vr += g; //efecto de la gravidad

distance = point_distance( x,y, obj_moon.x, obj_moon.y );
if( distance < 123 ){ //personaje atraviesa la superficie
   //acciones para que deje de atravesar la superficie
}
[/gml]

¿Porqué usas la variable image_angle del objeto obj_moon?

Funciono excelente.
En realidad no use la variable image_angle, pero no recordaba del todo como era el codigo y no tenia la pc de desarrollo a mano.


    image_angle -= 1.5;
   
    orbit_angle += orbit_speed;
    x = obj_moon.x + orbit_radius * sin(orbit_angle * pi / 360);
    y = obj_moon.y - orbit_radius * cos(orbit_angle * pi / 360);


Muchas gracias.