There might be a unity solution, but here a c# solution: ///variable in class public float alpha=0f; //this is the arc public float rotspeed=1.23; //rotation speed Start(){ //pseudocode, you need to get the position the two objects; this code is for case the pc doesnt move in game pc=position of center object; po=position of circulating object; (initiale position should be the distance you want to have to center object); } Update(){ alpha+=Time.deltaTime*rotspeed; //increment arc po=pc+Rotation2D(po-pc, alpha); //set new position } private Vector2 Rotation2D(Vector2 v, float angle) { float rad = (angle / 180) * Mathf.PI; float c = Mathf.Cos(rad); float s = Mathf.Sin(rad); return new Vector2(c * v.x - s * v.y, s * v.x + c * v.y); //rotation Matrix 2D } Haven't tested the code, but Rotation2D works proper.
You could make the white circle a child of the red circle, position the white circle wherever desired, then rotate the red circle.