using DG.Tweening; using Ichni.RhythmGame.Beatmap; using UnityEngine; namespace Ichni.RhythmGame { public class CameraOffsetEffect : EffectBase { #region [效果参数] Effect Parameters public Vector3 offsetValue; public AnimationCurve offsetCurve; Transform gameCameraTransform => GameManager.Instance.cameraManager.gameCamera.cam.transform; Tweener offsetTweener; #endregion #region [初始化] Initialization public CameraOffsetEffect(float effectTime, Vector3 offsetValue, AnimationCurve offsetCurve) { this.effectTime = this.effectTime; this.effectTime = effectTime; this.offsetValue = offsetValue; this.offsetCurve = offsetCurve; } #endregion #region [效果逻辑覆盖] Effect Pattern Overrides public override void Recover() { offsetTweener?.Kill(true); gameCameraTransform.localPosition = Vector3.zero; } public override void PreExecute() { offsetTweener = gameCameraTransform.DOBlendableLocalMoveBy(offsetValue, effectTime).SetEase(offsetCurve).Play(); } public override void Adjust() { } public override void Disrupt() { offsetTweener?.Kill(); gameCameraTransform.DOLocalMove(Vector3.zero, 0.4f).Play(); } #endregion } }