79 lines
2.0 KiB
C#
79 lines
2.0 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace SpriteShadersUltimate.Demo
|
|
{
|
|
public class Demo_Trigger : MonoBehaviour
|
|
{
|
|
public List<Demo_TriggerEvent> events;
|
|
private ShaderFaderSSU fader;
|
|
|
|
private void Start()
|
|
{
|
|
fader = GetComponent<ShaderFaderSSU>();
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
} |