Rotate object arround other object, but always facing the camera
Hi everyone,
I'm not working long with Unity and i have a problem of how to approach this situation.
What we have in the scene:
object1
object2
camera
What i want to do:
Object1 is a static object, not moving, just sitting there. On the right side of object1 is object2. Object2 should always be next (right side) to object 1. So if the camera moves arround object1, object2 should always rotate arround object1 and from the cameras perspective stay right of object1.
Object2 should also rotate itself to face the camera, but thats not the point of this thread.
Maybe this image can help understanding what i want to do:
Some help would be really nice. Thanks, Angelo
Answer by doublemax · Sep 30, 2016 at 06:40 PM
So the "object 2" should always be perpedicular to the line between "object 1" and the camera?
Try this script, you need to drag the camera and the center object into the respective variables.
The comments should explain what's going on.
using UnityEngine;
using System.Collections;
public class Satellite : MonoBehaviour
{
public Camera _camera;
public GameObject _center_object;
public float _distance = 2.0f;
void Update ()
{
// vector from the center-object to the camera
Vector3 vec = _center_object.transform.position - _camera.transform.position;
// create a vector that's perpedicular to the up vector *and* the vector towards the camera
// => vector from the center-object to the new satellite position
Vector3 vec_sphere = Vector3.Cross( vec, _center_object.transform.up );
transform.position = _center_object.transform.position - vec_sphere.normalized * _distance;
}
}