wicked357 2424 Report post Posted March 10, 2010 Simple put, I want to move my sprite based on it rotated angle, like in Asteroids where if you rotate to the left and apply impulse you will move in the direction you are facing. In my program I use ApplyImpulse which takes two vectors the first is the impulse and the second is the point, basically impulse would be velocity of the object and point would be the position of the object. Here is an example of adding impulse to my object //Moves the object 0 on the X coordinate and -1 on the Y coordinate object.ApplyImpulse(Vector2(0, -1), Vector2(position.X, position.Y)); I can get the angle of my object by calling object.angle, which is obtained by using the GetAngle() in my physics library. Anyone have any ideas on how to apply this directional moving by rotation? Or any suggestions here? 0 Share this post Link to post Share on other sites
Endar 668 Report post Posted March 10, 2010 First of all, it will get confusing if you have an implulse vector and an angle, because you clearly want to use the angle as the direction, but having an implulse vector implies that the impulse vector is the direction, so we'll use the angle. The angle is the direction that you want to move (which we will convert to a direction vector), so just to make things simpler, have the other arguments as the current position and the distance you want to move.So, take the angle, convert to radians (if not in radians already) and use sin(angle) to calculate the 'y' component of the direction vector and use cos(angle) to calculate the 'x' component of the direction vector. This will result in a direction vector of length 1 (like all direction vectors should be). Now, just take the direction vector and scale it by the distance you want to move. This will result in a vector that we'll use as an offset. Add it to the position, and you should end up with the final position that you need. 0 Share this post Link to post Share on other sites
wicked357 2424 Report post Posted March 10, 2010 Thanks Endar, but I got it figured out before your post. After tickering around and some successful Googling I got it figured.Here is how I did it successfully//Set the ships velocity, thrust, rotation thrustmyShip.velocity.x = sin(myShip.body->GetAngle());myShip.velocity.y = -cos(myShip.body->GetAngle());myShip.rotThrust = .5f;myShip.thrust = 1 / myWorld.scale;//Now to apply the thrust to my shipmyShip.body->ApplyImpulse((xVelocity * thrust), (yVelocity * thrust), myObject.body->GetWorldCenter().x, myObject.body->GetWorldCenter().y); 0 Share this post Link to post Share on other sites