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(); 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); // 让摄像机对准模型中心 } }