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

75 lines
2.7 KiB
C#
Raw Normal View History

2025-06-03 02:42:28 -04:00
using System.Collections;
using Ichni.RhythmGame.Beatmap;
using Lean.Pool;
using MoreMountains.Feedbacks;
namespace Ichni.RhythmGame
{
public class CameraShakeEffect : EffectBase
{
public float duration;
public float frequency;
public float amplitudeX;
public float amplitudeY;
public float amplitudeZ;
public CameraShakeEffect(float duration, float frequency, float amplitudeX, float amplitudeY, float amplitudeZ)
{
this.effectTime = 0;
this.duration = duration;
this.frequency = frequency;
this.amplitudeX = amplitudeX;
this.amplitudeY = amplitudeY;
this.amplitudeZ = amplitudeZ;
}
public override void Adjust()
{
MMF_Player effect = LeanPool.Spawn(GameManager.instance.basePrefabs.cameraShakeEffect).GetComponent<MMF_Player>();
effect.GetFeedbackOfType<MMF_CameraShake>().CameraShakeProperties.Duration = duration;
effect.GetFeedbackOfType<MMF_CameraShake>().CameraShakeProperties.Frequency = 1f / frequency;
effect.GetFeedbackOfType<MMF_CameraShake>().CameraShakeProperties.AmplitudeX = amplitudeX;
effect.GetFeedbackOfType<MMF_CameraShake>().CameraShakeProperties.AmplitudeY = amplitudeY;
effect.GetFeedbackOfType<MMF_CameraShake>().CameraShakeProperties.AmplitudeZ = amplitudeZ;
effect.PlayFeedbacks();
LeanPool.Despawn(effect.gameObject, duration);
}
public override EffectBase_BM ConvertToBM()
{
return new CameraShakeEffect_BM(duration, frequency, amplitudeX, amplitudeY, amplitudeZ);
}
}
namespace Beatmap
{
public class CameraShakeEffect_BM : EffectBase_BM
{
public float duration;
public float frequency;
public float amplitudeX;
public float amplitudeY;
public float amplitudeZ;
public CameraShakeEffect_BM()
{
}
public CameraShakeEffect_BM(float duration, float frequency, float amplitudeX, float amplitudeY, float amplitudeZ)
{
this.effectTime = 0;
this.duration = duration;
this.frequency = frequency;
this.amplitudeX = amplitudeX;
this.amplitudeY = amplitudeY;
this.amplitudeZ = amplitudeZ;
}
public override EffectBase ConvertToGameType(GameElement attachedGameElement)
{
return new CameraShakeEffect(duration, frequency, amplitudeX, amplitudeY, amplitudeZ);
}
}
}
}