Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I had a concept for a game come to me this morning but I can't figure out how I'd go about implementing the movement.

The general idea involves the left and right controls causing a sprite to go round the center of the plane/(or the centre of the game area) in an orbit rather than moving left and right and the up and down will cause the orbit distance to either increase or decrease unless there is something in the way.

The best way I can think of doing this would be to maintain the polar coordinates of my sprite and convert that to Cartesian coordinates for drawing. Would that work? Is there an easier way?

Also how would I go about ensuring that the sprite was rotated such that it was at a right angle to the line from the center point?

Would I be better off implementing this using gravity and a using a repelling force to keep the character at the desired distance? If so How would I go about doing this?

share|improve this question
add comment

1 Answer

up vote 5 down vote accepted

Unless you're going to have so much going on that the speed of trig functions is going to be a concern, I think focusing on a Polar system will be sufficient.

Storing the angle and distance-from-center for your sprite (Theta and R, respectively) will make the logic for moving based on Left, Right, Up, and Down understandable: Moving Left and Right would change your angle while Up and Down change the distance.

To draw the sprite, converting to Cartesian coordinates is pretty straight forward: x = R cos(Theta) and y = R sin(Theta) (plus some offset to rotate around the center of the screen/playing area/whatever).

Rotation of the sprite would simply be based on the Theta you're already storing. Either exactly equal to or plus a constant, depending on the initial orientation of the sprite.

share|improve this answer
    
Thanks for reaffirming my assumptions. –  Omar Kooheji Aug 10 '11 at 16:02
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.