75 lines
2.7 KiB
C#
75 lines
2.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |