Jump to content

  • Log In with Google      Sign In   
  • Create Account

xzbobzx

Member Since 27 Apr 2011
Offline Last Active Nov 28 2012 12:12 PM

Topics I've Started

Trouble with 2D speed vectoring.

08 November 2012 - 11:20 AM

So I'm working on a 2D, top-down racer-ish game and I devised an interesting algorithm using cosines and angles to calculate the speed vector. Too bad for me, it doesn't work like it's supposed to.

if( Rotation > 0 && Rotation < 90 )
{
  float Section_A = Speed*cos(90-Rotation);
  Velocity_Y = Speed*cos(Rotation);
  Velocity_X = Section_A - Section_A - Section_A;
}
else if( Rotation > 90 && Rotation < 180)
{
  float Section_B = Speed*cos(180-Rotation);
  float Section_C = Speed*cos(Rotation-90);
  Velocity_Y = Section_B - Section_B - Section_B;
  Velocity_X = Section_C - Section_C - Section_C;
}
else if( Rotation > 180 && Rotation < 270)
{
  float Section_D = Speed*cos(Rotation-180);
  Velocity_Y = Section_D - Section_D - Section_D;
  Velocity_X = Speed*cos(270-Rotation);
}
else if( Rotation > 270 && Rotation < 360)
{
  Velocity_Y = Speed*cos(360-Rotation);
  Velocity_X = Speed*cos(Rotation-270);
}
else if( Rotation < 1 )
{ Velocity_Y = Speed; Velocity_X = 0; }
else if( Rotation > 89 && Rotation < 91 )
{ Velocity_Y = 0; Velocity_X = Speed - Speed - Speed; }
else if( Rotation > 179 && Rotation < 181 )
{ Velocity_Y = Speed - Speed - Speed; Velocity_X = 0; }
else if( Rotation > 269 && Rotation < 271 )
{ Velocity_Y = 0; Velocity_X = Speed; }
Position_Y = Position_Y + Velocity_Y;
Position_X = Position_X + Velocity_X;

(0 rotation means the car is facing down, 90 it's facing left, 180 up, 270 right.
At >359 rotation goes insta 0.)

All that this does, is spaz out.
In my theory it should work, but apparently it does not.
Can anyone help?

How do I set up SDL in visual C++ 2010 express?

27 April 2011 - 07:19 AM

I've searched for tutorials but couldn't find any good ones, so I decided to ask here, how do I set up SDL in Visual C++ 2010 express?

PARTNERS