# Rotation around player is broken, does rotateAround not work correctly in 2D?

I’m making a Geometry Wars style game. I’m programming an enemy to move towards the player and start rotating around the player when the enemy is close enough. However, with my current code the enemy rotates in a triangle around a point in front of the player. Any idea what’s causing it?

``````{
public Transform player;
public Rigidbody2D rb;
public float enemySpd = 3;

void Start()
{
//Sets player to the transform of the player
player = GameObject.FindGameObjectWithTag("Player").transform;
}

void FixedUpdate()
{
FollowPlayer();
}

void FollowPlayer()
{
//Moves the enemy towards the player
transform.right = player.position - transform.position;
//Gets the distance between the enemy and the player
float dist = Vector2.Distance(player.position, transform.position);
//Sets zAxis to the z axis for the enemy to rotate around
Vector3 zAxis = new Vector3(0,0,1);
//Sets vec to an X axis for the directions of the enemy to face
Vector2 vec = new Vector2(1, 0);

//If the enemy is far enough away have him move toward the player
if (dist > 3)
{
//Moves the enemy forward
rb.velocity = transform.TransformDirection(vec * enemySpd);
}
//If the enemy is close enough stop moving forward and rotate around the player
else
{
//Rotates around the Z axis of the player
transform.RotateAround(player.position, zAxis, 1);
}

}
}
``````

Hello. I changed the code a little. I hope this helps :

``````    private Transform player;
private Rigidbody2D rb;

private void Start()
{
// Get components
player = GameObject.FindGameObjectWithTag("Player").transform;
rb = GetComponent<Rigidbody2D>();
}

private void FixedUpdate()
{
FollowPlayer();
}

private void FollowPlayer()
{
if (player)
{
// Moves the enemy towards the player
transform.right = player.position - transform.position;

// Gets the distance between the enemy and the player
float dist = Vector2.Distance(player.position, transform.position);

// Sets zAxis to the z axis for the enemy to rotate around
Vector3 zAxis = new Vector3(0, 0, 1);

// Sets vec to an X axis for the directions of the enemy to face
Vector2 vec = new Vector2(1, 0);

if (dist > 3)
{
// If the enemy is far enough away have him move toward the player
rb.bodyType = RigidbodyType2D.Dynamic;
rb.velocity = transform.TransformDirection(vec * moveSpeed);
}
else
{
// If the enemy is close enough stop moving forward and rotate around the player
rb.bodyType = RigidbodyType2D.Static;
transform.RotateAround(player.position, zAxis, 1);
}
}
}
``````