# C# RotateAround for 2DRigidBodies

I have a script that makes gameobjects move towards and rotate around another scripted gameobject. I would like to be able to use the gameobject’s 2Drigidbody for rotating. Is there a RotateAround function for 2DRigidbodies? I was also noticing that while using RotateAround the gameobjects wouldn’t move towards the scripted gameobject. How do I get the gameobjects to rotate around and move towards the scripted gameobject?

``````using UnityEngine;
using System.Collections;

public class MoveTowardsAndRotate: MonoBehaviour {
public float fDistance = 1;
public float fSpeed = 2;
public float sensitivity = 3F;
public GameObject gameObjectToMove;
public Collider2D[] cols;

void LateUpdate () {
cols = Physics2D.OverlapCircleAll(transform.position, 5f);

for(int i = 0; i < cols.Length; i++){
cols_.gameObject.rigidbody2D.MovePosition(Vector3.Lerp(cols*.gameObject.transform.position, transform.position, Time.smoothDeltaTime/sensitivity));*_
``````

_ cols*.transform.RotateAround(transform.position, Vector3.forward, - fSpeed / fDistance);
}
}
}*_

A RotateAround() will cause a change in position as well as a change in direction. So here is a literal translation of what you are asking for (untested):

``````	for(int i = 0; i < cols.Length; i++){
Vector3 pos = Vector3.Lerp(cols*.gameObject.transform.position, transform.position, Time.smoothDeltaTime/sensitivity);*
``````
• ``````  	Vector3 v = pos - transform.position;*
``````
• ``````  	float angle = -fSpeed / fDistance;*
``````

_ v = Quaternion.AngleAxis (angle, Vector3.forward) * v;_

• ``````  	pos = transform.position + v;*
``````

_ Rigidbody2D r = cols*.gameObject.rigidbody2D;_
_
r.MovePosition(pos);_
_
r.MoveRotation(r.rotation + angle);_
_
}*_
It can be written in a more compact (and less readable) form, but I left all the steps in.