MandiRex
MandiRex

Reputation: 21

How do I make my Unity3d camera rotate around his following object?

I'm making a game but I do not now how to let my camera rotate with the object he's following. (I did the follow part) Can somebody help me please. I'm using C#.

Upvotes: 1

Views: 3231

Answers (3)

Łukasz Górny
Łukasz Górny

Reputation: 11

If you want simple 3rd person camera, you can place camera as a child of your target object - the camera will "stick to it.

If you want to do this in code (for some reasons), something like this should work (attach script to GameObject with Camera component):

using UnityEngine;

public class CameraFollow : MonoBehaviour
{
    public Transform target; // Object to fallow. Select in Inspector
    public Vector3 offset = new Vector3(0, 0, -10); // Offset to target

    private GameObject container; // Container for our camera

    void Start()
    {
        container = new GameObject("Camera Container"); // Create container (empty GameObject) for camera to avoid unnecessary calculations. It will follow the target object
        transform.parent = container.transform; // Make this object child of container
    }

    //Update your camera follow script in LateUpade(), to be sure that 'target' movement is done
    void LateUpdate()
    {
        //Check if target is selected
        if (target == null)
            return;

        container.transform.position = target.position; // Set container position same as target 
        container.transform.rotation = target.rotation; // Set container rotation same as target 

        transform.localPosition = offset; // Move camera by offset inside the container
        transform.LookAt(target); // Optionaly, force camera look at target object on any offset
    }
}

Upvotes: 1

Gabriel Ilharco
Gabriel Ilharco

Reputation: 1679

You should use the transform.RotateAround to move the camera. This should be done inside the update method in your camera.

For example:

var target:transform;

function Update(){
     //...
     transform.RotateAround (target.position, Vector3.up, speed * Time.deltaTime);
}

For more information on the rotation method, see the docs.

Upvotes: 1

Stud
Stud

Reputation: 521

Please, can you describe what you actually want to do? What does "let my camera rotate with the object" mean?

If you want your camera to exactly follow the gameobject's rotation in a first person camera, you could achieve this by putting your camera as the gameobject's child. You could also do this using the following code:

[SerializeField]
private Transform obj; //reference the gameobject's transform

void Update()
{
    transform.rotation = obj.rotation;
}

Upvotes: 1

Related Questions