NewMyBook/Assets/script/CameraAdjuster.cs
2025-03-28 16:07:42 +08:00

37 lines
1.2 KiB
C#

using UnityEngine;
public class CameraAdjuster : MonoBehaviour
{
public Camera modelCamera; // 3D模型的摄像机
public Transform modelTransform; // 3D模型的 Transform
public float padding = 1.2f; // 额外边距,防止模型太贴近边界
void Start()
{
AdjustCameraToFitModel();
}
public void AdjustCameraToFitModel()
{
if (modelTransform == null || modelCamera == null) return;
Renderer modelRenderer = modelTransform.GetComponentInChildren<Renderer>();
if (modelRenderer == null) return;
Bounds bounds = modelRenderer.bounds; // 获取模型的包围盒
float modelSize = Mathf.Max(bounds.size.x, bounds.size.y, bounds.size.z); // 取最大的尺寸
if (modelCamera.orthographic) // 正交投影
{
modelCamera.orthographicSize = (modelSize / 2) * padding;
}
else // 透视投影
{
float distance = modelSize / (2 * Mathf.Tan(modelCamera.fieldOfView * 0.5f * Mathf.Deg2Rad));
modelCamera.transform.position = bounds.center - modelCamera.transform.forward * distance * padding;
}
modelCamera.transform.LookAt(bounds.center); // 让摄像机对准模型中心
}
}