Unity3D第三人称视角摄像机、跟随与球面旋转
逻辑释义
【关键transform】 1[玩家] 2[注视目标点] 3[摄像机]
[摄像机]跟随[注视目标点],[注视目标点]跟随[玩家]
【看向注视目标点】 摄像机 用transform.LookAt()方法. 始终看向 注视目标点
【视角垂直旋转】 摄像机始终根据 注视目标点的后方向量与上方向量或下方向量 插值获得 偏移向量.
调整插值 以获得 垂直旋转的效果
【视角水平旋转】 注视目标点水平旋转, 带动 摄像机水平旋转
【视角远近缩放】 获得偏移向量后 修改偏移向量长度
【Unity使用】 脚本组件挂到[摄像机]上 [玩家]物体 需添加Tag“Player” (或public Transform player ;手动挂载)
图解分析
Unity C#代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SphereCamera : MonoBehaviour
{
private Transform player; //玩家
private Transform watchPoint; //注视目标点
private float watchPointHeight = 1.7f; //注视目标点高度
private float distance = 2.8f; //当前 摄像机到目标点距离
private float distanceMax = 5.0f; //到目标点最大距离
private float distanceMin = 1.0f; //到目标点最小距离
private float distanceSpeed = 0.3f; //距离增减速度
private float rotationY; //水平旋转
private float rotationYSpeed = 1.5f; //水平旋转速度
private float AngleLerp; //当前垂直角度 插值系数
private float AngleMax = 80.0f;