using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace SpriteShadersUltimate.Demo { public class Demo_Trigger : MonoBehaviour { public List events; private ShaderFaderSSU fader; private void Start() { fader = GetComponent(); } private void OnTriggerEnter2D(Collider2D collision) { if (collision.name == "Player") ChangeState(true); } private void OnTriggerExit2D(Collider2D collision) { if (collision.name == "Player") ChangeState(false); } public void ChangeState(bool isActive) { if (fader != null) fader.isFaded = isActive; if (events != null && isActive) foreach (var demoEvent in events) StartCoroutine(PlayEvent(demoEvent)); } private IEnumerator PlayEvent(Demo_TriggerEvent demoEvent) { yield return new WaitForSeconds(demoEvent.delay); demoEvent.Play(transform); } } [Serializable] public class Demo_TriggerEvent { [Header("Delay:")] public float delay; [Header("Change Fader:")] public ShaderFaderSSU fader; public bool faderState; public bool negateState; [Header("Snap Player:")] public bool snapPlayer; public bool isRelative; public Vector3 snapPosition; [Header("Hurt Player:")] public bool hurtPlayer; public Vector2 velocity; public void Play(Transform source) { if (fader != null) { if (negateState) fader.isFaded = !fader.isFaded; else fader.isFaded = faderState; } if (snapPlayer) Demo_Player.instance.SnapPosition(isRelative ? source.position + snapPosition : snapPosition); if (hurtPlayer) Demo_Player.instance.GetHurt(velocity); } } }