该源代码转载自Unity游戏案例中的TANKS代码中
------------来自第二次使用Unity3D制作游戏的游戏制作新人小白
一、代码自我解析
二、油管学习地址
三、Unity3D源代码
一、源代码自我解析
using UnityEngine;
public class CameraControl : MonoBehaviour
{
public float m_DampTime = 0.2f; // 摄像机延迟移动时间系数
public float m_ScreenEdgeBuffer = 4f; // 在最上面/下面的目标和屏幕边缘之间的空间(边缘缓冲区大小)
public float m_MinSize = 6.5f; // 正交摄像机所能看的最小尺寸
/*[HideInInspector]*/ public Transform[] m_Targets;
// 摄像机需要包含的所有目标
private Camera m_Camera; // 用于引用摄像机
private float m_ZoomSpeed; // 定义摄像机变焦的速率
private Vector3 m_MoveVelocity; // 用于相机移动时对速度进行缓冲的向量
private Vector3 m_DesiredPosition; // 相机移动的位置
private void Awake()
{
m_Camera = GetComponentInChildren<Camera>(); // 游戏一开始便使m_Camera对象获取场景中的相机
}
private void FixedUpdate()
{
// 移动相机
Move();
// 改变相机的焦距大小
Zoom();
}
private void Move()
{
// 找到目标到原点的平均位置所在(坦克的移动路线上的中点)
FindAveragePosition();
// 使相机光滑地移动到目标位置
transform.position = Vector3.SmoothDamp(transform.position, m_DesiredPosition, ref m_MoveVelocity, m_DampTime);
}
private void FindAveragePosition()
{
Vector3 averagePos = new Vector3();
int numTa