- Home /
Making a child object circulate/orbit around another object using mouseposition
So, what i'm trying to accomplish is my childobject circulating/orbiting my mainobject, but in the direction my mouse cursor points to. The problem here is it has to stay at a certain set radius, much like a planet circulating another planet. But in this case i want to chose the direction with my cursor.
The code i've written so far tracks the mouse/cursor position perfectly but only rotates the childobject itself, it's not making the object rotate around the mainobject
Any help is appreciated
using UnityEngine;
using System.Collections;
public class RotationScript : MonoBehaviour
{
// Use this for initialization
void Start () {
}
// Update is called once per frame
void FixedUpdate ()
{
float test = angleInDegree (screen (), mouseposition ());
Debug.Log (test);
this.transform.eulerAngles = new Vector3 (transform.eulerAngles.x, transform.eulerAngles.y, -test);
}
Vector3 mouseposition()
{
return Input.mousePosition;
}
Vector2 screen ()
{
return new Vector2 (Screen.width / 2, Screen.height / 2);
}
public float angleInDegree(Vector2 origin, Vector3 target)
{
var n = 360 - (Mathf.Atan2 (origin.y - target.y, origin.x - target.x)) * 180 / Mathf.PI + 270;
return n % 360;
}
private float toRadians(float x)
{
return (x * Mathf.PI) / 180;
}
}
Answer by Jeff-Kesselman · Nov 19, 2014 at 07:40 PM
You solve this in the scene graph.
(1) Add a child empty object to the parent at the same position as the parent (transform of 0,0,0)
(2) Move the orbiting object to be a child of the empty object
(3) Rotate the empty object.
Your answer

Follow this Question
Related Questions
Recreating scene objects at next level 1 Answer
Limit rotation Smoothly 2 Answers
Why the transfrom.eulerAngles keep reset to 0? 2 Answers
Trouble Spawning Bullets with proper rotation 0 Answers
Farseer Physics and Character Control 0 Answers