# How to use RotateAround on multiple axis

Hello,
I’m currently trying to get an orbital system working similar to that of super stardust.
Currently the code is:

``````transform.RotateAround(Vector3.zero, Vector3.right, Input.GetAxis("Vertical")*movementSpeed*Time.deltaTime);
transform.RotateAround(Vector3.zero, Vector3.up, Input.GetAxis("Horizontal")*movementSpeed*Time.deltaTime);
``````

This is strange to me because it seems like the control axis are inverted (horizontal controlling up/down). Also my main issue is that once the cube has a orbited the origin about 90 degrees the control scheme for vertical movement begins to invert (up now controls down and vice versa). All this 360 and 3D rotational stuff has me genuinely stumped and i don’t understand why these things are happening.
Any help would be greatly appreciated.

Rotation stuff can be very confusing to newcomers. Heck, I still struggle with it sometimes. Basically what you’re experiencing is the shortcoming of a Euler description of rotation. The Quaternion class has several methods which can help to overcome these limitations, but it requires some careful thought about what actually needs to happen.

More often than not, this kind of problem can be solved by treating your rotation problem like a vector math problem, simply because vector math is easier to understand. Use vector math to arrive at the desired “look direction” you want to achieve through rotation, then convert that result to a Quaternion rotation using the build-in methods.

I know it sounds like a bit much, but once you grasp how to work around their quirks, you can leverage Quaterions to their full potential.