Sign in to follow this  
rocklobster

How to improve in simple movement integration

Recommended Posts

Hi guys,

Me and some friends are currently making a game where you fly a spaceship around and you can yaw, pitch roll freely in space. At the moment we've been just moving the spaceship along its models direction vector something like this

[CODE]
m_velocity += m_heading;
m_position += m_velocity;
[/CODE]

We've also tried to improve on this by adding acceleration

[CODE]
m_acceleration += m_heading;
m_velocity += m_acceleration;
m_position += m_velocity;
[/CODE]

but we have noticed that it makes it really hard to change the space ships direction doing it this way and it ends up 'sliding' for a long time. So it has become apparent we need some sort of angular influence on the direction of the space ship, so that the yaw/pitch/roll of the spaceship model has a greater influence on the direction (like when a vehicle turns its wheels, the car follows the direction of the wheels).

I was hoping there is not a too advanced solution to this because mathematics isn't my forte. I'm somewhat familiar with the term angular velocity (change in rotation?) but i have no idea how to implement this.

Thanks for any help,

- rocklobster

Share this post


Link to post
Share on other sites
The problem here is that the behaviour you describe is actually what physics tells us to expect (if you are accelerating at 9.8 m/s/s, it will take a while to effect changes in your direction of movement if you are travelling at a few hundred metres per second). You could try increasing the acceleration or decreasing the scale of the in-game velocities, but there isn't a force that will cause a spaceship to act like a car or fighter jet.

Share this post


Link to post
Share on other sites
Yeah, controlling ships obeying Newtonian physics does not come naturally.

My suggestion:
- Project the current movement vector onto the heading vector (check this link out: [url="http://en.wikipedia.org/wiki/Vector_projection"]http://en.wikipedia.org/wiki/Vector_projection[/url]).
- Keep the component of movement that matches the heading vector.
- Apply a drag type force to the component of movement perpendicular to the heading, e.g. scale it by 0.9 every physics frame.

This would mean that if you turn you would drift a bit but end up drifting in the direction you're heading, but maybe slower than before. If you wanted it to seem even more car-like you could keep the vector the same magnitude but gradually rotate it to meet the heading.

Share this post


Link to post
Share on other sites
[quote name='RulerOfNothing' timestamp='1335479005' post='4935238']
The problem here is that the behaviour you describe is actually what physics tells us to expect (if you are accelerating at 9.8 m/s/s, it will take a while to effect changes in your direction of movement if you are travelling at a few hundred metres per second). You could try increasing the acceleration or decreasing the scale of the in-game velocities, but there isn't a force that will cause a spaceship to act like a car or fighter jet.
[/quote]

Hey thanks for the reply. To be honest we're not entirely looking for an accurate model of space flight, something more like a fighter jet would be more like what we are going for.


[quote name='jefferytitan' timestamp='1335479210' post='4935239']
Yeah, controlling ships obeying Newtonian physics does not come naturally.

My suggestion:
- Project the current movement vector onto the heading vector (check this link out: [url="http://en.wikipedia.org/wiki/Vector_projection"]http://en.wikipedia....ctor_projection[/url]).
- Keep the component of movement that matches the heading vector.
- Apply a drag type force to the component of movement perpendicular to the heading, e.g. scale it by 0.9 every physics frame.

This would mean that if you turn you would drift a bit but end up drifting in the direction you're heading, but maybe slower than before. If you wanted it to seem even more car-like you could keep the vector the same magnitude but gradually rotate it to meet the heading.
[/quote]

I'll give this a shot. Thanks.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this