• 10
• 10
• 12
• 12
• 14

# How to improve in simple movement integration

This topic is 2191 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## 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

 m_velocity += m_heading; m_position += m_velocity; 

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

 m_acceleration += m_heading; m_velocity += m_acceleration; m_position += m_velocity; 

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 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 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: http://en.wikipedia.org/wiki/Vector_projection).
- 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 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.

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.

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: http://en.wikipedia....ctor_projection).
- 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.

I'll give this a shot. Thanks.