43 lines
981 B
C#
43 lines
981 B
C#
using UnityEngine;
|
|
using Unity.Cinemachine;
|
|
|
|
public class DownwardCamera : CinemachineExtension
|
|
{
|
|
private float minY;
|
|
private bool isInitialized = false;
|
|
|
|
protected override void PostPipelineStageCallback(
|
|
CinemachineVirtualCameraBase vcam,
|
|
CinemachineCore.Stage stage,
|
|
ref CameraState state,
|
|
float deltaTime)
|
|
{
|
|
if (stage == CinemachineCore.Stage.Body)
|
|
{
|
|
Vector3 pos = state.RawPosition;
|
|
|
|
if (!isInitialized)
|
|
{
|
|
minY = pos.y;
|
|
isInitialized = true;
|
|
}
|
|
|
|
if (pos.y < minY)
|
|
{
|
|
minY = pos.y;
|
|
}
|
|
// If it tries to move UP (higher Y), lock it to the lowest point we've reached
|
|
else
|
|
{
|
|
pos.y = minY;
|
|
}
|
|
|
|
state.RawPosition = pos;
|
|
}
|
|
}
|
|
|
|
public void ResetCamera()
|
|
{
|
|
isInitialized = false;
|
|
}
|
|
} |