Just a quick post today about implementing circular motion in a 2D environment.
centerX = <center X coordinate>;
centerY = <center Y coordinate>;
radius = <radius of circle>;
speed = <time to complete full circle in seconds>
speedScale = (0.001 * 2 * Math.PI) / speed;
angle = <game time in milliseconds> * speedScale;
xCoord = centerX + sin(angle) * radius;
yCoord = centerY + cos(angle) * radius;
position = new Vector2(xCoord, yCoord);
- Set centerX and centerY to the center of the circle (coordinates that you want your entity to move around)
- Set the radius of the circle
- Set the speed at which the entity should complete a full circle in seconds
- Set the position of the entity to the results of the speedscale, x-translation, and y-translation
As time goes from 0 to 2*Pi and back to 0, the motion will complete a full circle.