• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!

Rocket orbiting issues

Hey Guys,

I'm using some trig functions to simulate a rocket orbit around earth. Changing the direction of the rocket and applying thrust then changes the orbit shape and size etc.

I am using the SOHCAHTOA principles to achieve this, however in places, often as vspeed crosses over 0, the rocket suddenly shoots off away from the planet. I'm guessing this is because gamemaker has an inverted y axis and so the vertical speed must be switched, however doing so doesn't give me a better result.

Is there something more I'm missing? If i need to post some code i can do so, I just had little time to write this up.

Thanks in advance everyone,
Lolasaurus
 
Seems you are on the right track, but hard to tell without more info.

Add debug info displaying relevant numbers on-screen. ( x, y, vspeed, hspeed, direction, speed etc... ).

Observe and check for anomalies to pinpoint what's going wrong.

Post the relevant parts of your code here, along with a breakdown of what "...the rocket suddenly shoots off away from the planet" entails - (Is there any consistent pattern to it, does it always happen in the same place, does the rocket always shoot off at the same speed and direction etc...) . Diagrams and/or a video if its difficult to explain.
 
Okay I definitely had something wrong in that attempt, the orbiting is fixed now and works well, except... The orbit constantly changes, I guess due to rounding of lengthy decimal places etc.

Code:
G=10
r=point_distance(x,y,earth.x,earth.y);
dir=point_direction(x,y,earth.x,earth.y);

F=G/r^2

Fv=0.2*-(F*dsin(dir));
Fh=0.2*F*dcos(dir);

vspeed+=Fv;
hspeed+=Fh;

image_angle=direction;
Here's my simple code, Newtons Gravtitational equation has been simplified there.

How can I increase the accuracy of the orbit so it maintains the same shape until thrust is applied etc?
 

NightFrost

Member
That's the nature of gravity. When an object's velocity is small enough, a gravity well will capture it onto an orbit. That orbit will be elliptical and its apogee and perigee will likely move around. A high-velocity object captured after a close pass will form a highly elliptical orbit, while a slow one captured at distance will form a more rounded one. To alter the orbit, thrust must be applied to change the velocity vector. To create an orbit that is approximately circular you either execute a well-planned orbital entry, or the game presents some sort of "orbital docking" feature that throws out gravity and applies cartoon physics to form a circular orbit.
 
Top