如何让Unity3d相机围绕下面的物体旋转?

时间:2016-01-12 17:00:03

标签: unity3d unityscript

我正在制作游戏,但我现在不知道如何让我的相机随着他跟随的对象旋转。 (我做了以下部分)请有人帮助我。我正在使用C#。

3 个答案:

答案 0 :(得分:1)

您应该使用transform.RotateAround移动相机。这应该在相机的更新方法内完成。

例如:

var target:transform;

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

有关旋转方法的详细信息,请参阅docs

答案 1 :(得分:1)

请你能描述一下你真正想做的事吗? “让我的相机随物体旋转”是什么意思?

如果您希望您的相机在第一人称相机中完全遵循游戏对象的旋转,您可以通过将您的相机作为游戏对象的孩子来实现此目的。 您也可以使用以下代码执行此操作:

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

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

答案 2 :(得分:1)

如果您想要简单的第三人称相机,您可以将相机作为目标物体的孩子放置 - 相机会“坚持”。

如果你想在代码中执行此操作(由于某些原因),这样的事情应该可行(使用Camera组件将脚本附加到GameObject):

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
    }
}