using UnityEngine; using Cinemachine; /// /// Cinemachine Extension: 垂直跟随,水平锁定 /// [ExecuteAlways] [SaveDuringPlay] [AddComponentMenu("")] public class LockHorizontalPositionExtension : CinemachineExtension { [Tooltip("锁定的 X 坐标")] public float LockedX = 0f; // [Tooltip("锁定的 Z 坐标")] // public float LockedZ = -10f; protected override void PostPipelineStageCallback( CinemachineVirtualCameraBase vcam, CinemachineCore.Stage stage, ref CameraState state, float deltaTime) { // 在 Body 阶段后修改位置 if (stage == CinemachineCore.Stage.Body) { Vector3 pos = state.FinalPosition; pos.x = LockedX; // pos.z = LockedZ; state.PositionCorrection += pos - state.FinalPosition; } } }