54 lines
1.5 KiB
C#
54 lines
1.5 KiB
C#
using DG.Tweening;
|
|
using Ichni.RhythmGame.Beatmap;
|
|
using UnityEngine;
|
|
|
|
namespace Ichni.RhythmGame
|
|
{
|
|
public class CameraOffsetEffect : EffectBase
|
|
{
|
|
#region [效果参数] Effect Parameters
|
|
public float duration;
|
|
public Vector3 offsetValue;
|
|
public AnimationCurve offsetCurve;
|
|
|
|
Transform gameCameraTransform => GameManager.Instance.cameraManager.gameCamera.cam.transform;
|
|
Tweener offsetTweener;
|
|
#endregion
|
|
|
|
#region [初始化] Initialization
|
|
public CameraOffsetEffect(float duration, Vector3 offsetValue, AnimationCurve offsetCurve)
|
|
{
|
|
this.effectTime = this.duration;
|
|
this.duration = duration;
|
|
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, duration).SetEase(offsetCurve).Play();
|
|
}
|
|
|
|
public override void Adjust()
|
|
{
|
|
|
|
}
|
|
|
|
public override void Disrupt()
|
|
{
|
|
offsetTweener?.Kill();
|
|
gameCameraTransform.DOLocalMove(Vector3.zero, 0.4f).Play();
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
|
|
} |