Now, I want to at the same time rotate the cube such that it is always facing the center(The camera at the center of the cube always sees the same face of the cube). How do I go about doing this?
Isn’t that exactly what transform.LookAt() is for? Have an object on the center (let’s call it ‘faceme’, in your case it’s the camera itself) and put that object into a public GameObject faceObject; in your cube’s script. Now, in the cube’s Update(),
Normal rotations look like transform.rotation=Quatenion.Euler(0,angle,0);. It uses “unity coords”, which is degrees, clockwise, where 0 is along +z. But LookAt is often an easy shortcut.
For the movement, trig is the hard way, plus it uses radians and goes backwards from Unity. Standard 3D built-ins take a forward arrow and spin it by the angle:
transform.position=center+Quaternion.Euler(0,angle,0)(Vector3.forwardRadius);. This way is also simpler to adjust for other axis.