# Rotate Around Object

I have a cylinder, that I want to spin. Normally I would have no problem here with this code :

``````void Update () {

wheel.Rotate(Vector3.right * rotateVelocity * Time.deltaTime);
}
``````

Unfortunately, this doesn’t work because the center of the wheel is offset far away. Centering it brings up some problems. So I want to manually set the center by putting an empty gameObject in the middle of the cylinder. I need the cylinder to rotate around the that empty gameObject. How do I set the object that I want the cylinder to rotate around?

What I have done in the past is that I set the cylinder as a child of the empty game object(once i have placed the game object where I want it) I then attach this Javascript to the cylinder, you will have to edit your x,y,z variables in the inspector to get it to rotate how you want:

var xSpeed : float = 1;

var ySpeed : float = 1;

var zSpeed : float = 1;

var manual : boolean = false;

function Update ()
{

``````if( !manual )
{

transform.RotateAround( transform.position, Vector3.right, ySpeed * Time.deltaTime );
transform.RotateAround( transform.position, Vector3.up, xSpeed * Time.deltaTime );
transform.RotateAround( transform.position, Vector3.forward, zSpeed * Time.deltaTime );

}
else
{

if( Input.GetAxis("Horizontal") != 0 )
{

transform.RotateAround( transform.position, Vector3.up, Input.GetAxis("Horizontal")*xSpeed * Time.deltaTime );

}

if( Input.GetAxis("Vertical") != 0 )
{

transform.RotateAround( transform.position, Vector3.right, Input.GetAxis("Vertical")*ySpeed * Time.deltaTime );

}

}
``````

}

Nevermind, I figured it out. I just used RotateAround, and set the position using a variable Transform. Here’s the code for anyone who wants it :

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

public class SpinningWheel : MonoBehaviour {

public float rotateVelocity;

public Transform pivot;
private Transform wheel;

void Awake () {

wheel = transform;
}

void Update () {

wheel.RotateAround(pivot.position, Vector3.right, rotateVelocity * Time.deltaTime);
}
}
``````