51 lines
1.9 KiB
C#
51 lines
1.9 KiB
C#
using Lean.Pool;
|
|
using UnityEngine;
|
|
|
|
namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse
|
|
{
|
|
public class DTMRippleEffect : EffectBase
|
|
{
|
|
#region [效果属性与状态] Effect Fields & States
|
|
private DTMRipple ripple;
|
|
public float rippleTime;
|
|
public Vector3 positionOffset;
|
|
public Vector3 eulerAnglesOffset;
|
|
public Vector3 scale;
|
|
public Color emissionColor;
|
|
public float emissionIntensity;
|
|
#endregion
|
|
|
|
#region [初始化] Initialization
|
|
public DTMRippleEffect(float rippleTime, Color emissionColor, float emissionIntensity,
|
|
Vector3 positionOffset, Vector3 eulerAnglesOffset, Vector3 scale)
|
|
{
|
|
this.effectTime = 0;
|
|
this.rippleTime = rippleTime;
|
|
this.positionOffset = positionOffset;
|
|
this.eulerAnglesOffset = eulerAnglesOffset;
|
|
this.scale = scale;
|
|
this.emissionColor = emissionColor;
|
|
this.emissionIntensity = emissionIntensity;
|
|
}
|
|
#endregion
|
|
|
|
#region [效果核心逻辑] Core Effect Logic
|
|
public override void Adjust()
|
|
{
|
|
GameObject prefab = GameManager.Instance.customPrefabs["departure_to_multiverse"].GetPrefab("DTM_Ripple");
|
|
ripple = LeanPool.Spawn(prefab, attachedGameElement.transform).GetComponent<DTMRipple>();
|
|
ripple.transform.localPosition = positionOffset;
|
|
ripple.transform.localEulerAngles = eulerAnglesOffset;
|
|
ripple.transform.localScale = scale;
|
|
ripple.transform.SetParent(null);
|
|
|
|
ripple.SetRippleTime(rippleTime);
|
|
ripple.SetEmissionColor(emissionColor * Mathf.Pow(2, emissionIntensity));
|
|
ripple.mainRipple.Play();
|
|
LeanPool.Despawn(ripple.gameObject, rippleTime);
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
}
|