The problem that I am facing is that the bigger the value of the radius the faster the object moves. I assumed that the speed of movement will be determined by the moveSpeed variable in this case but that’s not happening. So, any help is appreciated, thanks

Update is a (almost) fixed amount of time… Give or take a tick or two

if your radius is larger… there is more distance to travel in that Update.
You’re not really doing any [ speed = distance / time ] calculations here… you’ve just arbitrarily picked a number you’d like to use ( move speed).

Hi thanks for the reply. I did try this method out, and at one point it seemed like it resolved the problem but upon close inspection it causes the opposite result. For example when the radius is 1 it seems to be moving faster than when the radius is say 20. But I get why that happens, the speed is getting divided by 1. And what is ‘Mathf.Tau’? Unity doesn’t seem to recognize it.

I imagine to your eye, it will appear as though the smaller radius is moving faster, but this is an optical illusion. It’s accelerating faster, which tricks your brain.

Sorry about the Mathf.Tau, apparently C# doesn’t have it defined? No idea why, it’s a ridiculously common mathematical constant.

Personally, I would just divide like radius like you suggest, but the reason I used circumference instead is so that moveSpeed would be the speed at which the object actually moved, rather than being off by a facter of tau.

You could consider just putting an empty gameobject at the center of your circle, make it the parent of the object you want to move, and just rotate that parent at a constant speed. You’d calculate the amount of rotation to achieve a given speed using math similar to what is already posted.

For some reason, I never realized that I could just. Do that. Instead of searching for a method to make the object move and rotate on its own. Thanks for the tip, I needed it.