Jump to content

  • Log In with Google      Sign In   
  • Create Account

How to improve in simple movement integration


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
3 replies to this topic

#1 rocklobster   Members   -  Reputation: 415

Like
0Likes
Like

Posted 26 April 2012 - 03:00 PM

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

Sponsor:

#2 RulerOfNothing   Members   -  Reputation: 1164

Like
0Likes
Like

Posted 26 April 2012 - 04:23 PM

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.

#3 jefferytitan   Crossbones+   -  Reputation: 2246

Like
0Likes
Like

Posted 26 April 2012 - 04:26 PM

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.

#4 rocklobster   Members   -  Reputation: 415

Like
0Likes
Like

Posted 27 April 2012 - 12:10 AM

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.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS