33 lines
893 B
C#
33 lines
893 B
C#
using UnityEngine;
|
|
using Cinemachine;
|
|
|
|
/// <summary>
|
|
/// Cinemachine Extension: 垂直跟随,水平锁定
|
|
/// </summary>
|
|
[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;
|
|
}
|
|
}
|
|
} |