Files
ichni_Official/Assets/Scripts/Game/GameElements/GeneralEffects/CameraOffsetEffect.cs

54 lines
1.5 KiB
C#
Raw Normal View History

2025-07-10 08:42:30 -04:00
using DG.Tweening;
using Ichni.RhythmGame.Beatmap;
using UnityEngine;
namespace Ichni.RhythmGame
{
public class CameraOffsetEffect : EffectBase
{
2026-03-14 03:13:10 -04:00
#region [] Effect Parameters
2025-07-10 08:42:30 -04:00
public float duration;
public Vector3 offsetValue;
public AnimationCurve offsetCurve;
2026-03-14 03:13:10 -04:00
Transform gameCameraTransform => GameManager.Instance.cameraManager.gameCamera.cam.transform;
2025-07-10 08:42:30 -04:00
Tweener offsetTweener;
2026-03-14 03:13:10 -04:00
#endregion
2025-07-10 08:42:30 -04:00
2026-03-14 03:13:10 -04:00
#region [] Initialization
2025-07-10 08:42:30 -04:00
public CameraOffsetEffect(float duration, Vector3 offsetValue, AnimationCurve offsetCurve)
{
this.effectTime = this.duration;
this.duration = duration;
this.offsetValue = offsetValue;
this.offsetCurve = offsetCurve;
}
2026-03-14 03:13:10 -04:00
#endregion
#region [] Effect Pattern Overrides
2025-07-10 08:42:30 -04:00
public override void Recover()
{
offsetTweener?.Kill(true);
gameCameraTransform.localPosition = Vector3.zero;
}
public override void PreExecute()
{
2025-08-22 14:54:40 -04:00
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();
2025-07-10 08:42:30 -04:00
}
2026-03-14 03:13:10 -04:00
#endregion
2025-07-10 08:42:30 -04:00
}
}