Files
Continentis/Assets/OtherPlugins/Sprite Shaders Ultimate/Demo/Scripts/Demo_Trigger.cs
SoulliesOfficial d09b58fd80 架构大更
2026-03-20 11:56:50 -04:00

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);
}
}
}