相机在旋转时跟随物体

时间:2016-05-31 04:47:51

标签: c# unity3d camera rotation

我正在尝试制作一款游戏,当相机移动时,相机跟随用户。我让相机成为玩家的孩子,在编辑器中,相机可以很好地围绕玩家旋转。当我玩游戏(在Unity中)并旋转播放器时,相机会旋转而不是围绕播放器旋转以保持相同的常规跟随距离。 我使用transform.Rotate()来旋转播放器。

摘要:

  1. 寻找在3D游戏中跟随玩家的相机,当玩家转身时看起来并不相同。
  2. 问题是摄像机出现在编辑器中以完美地围绕播放器旋转,但是在Unity运行期间调用transform.Rotate()时则不行。
  3. 感谢所有帮助,请求帮助。

1 个答案:

答案 0 :(得分:3)

  

我让相机成为玩家的孩子并且在编辑器中

这一切都失败了。如果您希望相机跟随播放器,则不要让相机成为小孩。

您所做的是在Start()功能中获取相机与播放器之间的距离。这也称为offset。在LateUpdate()功能中,将相机连续移动到播放器的位置,然后将该偏移添加到相机的位置。就这么简单。

public class CameraMover: MonoBehaviour
{
    public Transform playerTransform;
    public Transform mainCameraTransform = null;
    private Vector3 cameraOffset = Vector3.zero;

    void Start()
    {

        mainCameraTransform = Camera.main.transform;

        //Get camera-player Transform Offset that will be used to move the camera 
        cameraOffset = mainCameraTransform.position - playerTransform.position;
    }

    void LateUpdate()
    {
        //Move the camera to the position of the playerTransform with the offset that was saved in the begining
        mainCameraTransform.position = playerTransform.position + cameraOffset;
    }
}