核心代码只有一行,基于玩家的位置和相机的朝向来计算相机新的位置。
public class CameraCtrl : MonoBehaviour
{
public Transform mainCameraTransform;
public Transform playerTransform;
public float m_TargetDistance = 2.0f;
public float m_Yaw = 0;
void Update()
{
Vector3 ori = mainCameraTransform.rotation.eulerAngles;
ori.y = playerTransform.rotation.eulerAngles.y;
ori.x = m_Yaw;
// 相机的偏航角等于玩家的偏航角
mainCameraTransform.rotation = Quaternion.Euler(ori);
// 基于玩家的位置,相机的朝向和相机距离玩家的位置,算出相机的位置
mainCameraTransform.position = playerTransform.position - mainCameraTransform.forward*m_TargetDistance;
}
}



