Files
Continentis/Assets/OtherPlugins/Sprite Shaders Ultimate/Demo/Scripts/Demo_Trigger.cs
SoulliesOfficial ad4948207e 推进度!
2025-11-25 21:49:03 -05:00

104 lines
2.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
namespace SpriteShadersUltimate.Demo
{
public class Demo_Trigger : MonoBehaviour
{
ShaderFaderSSU fader;
public List<Demo_TriggerEvent> events;
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 (Demo_TriggerEvent demoEvent in events)
{
StartCoroutine(PlayEvent(demoEvent));
}
}
}
IEnumerator PlayEvent(Demo_TriggerEvent demoEvent)
{
yield return new WaitForSeconds(demoEvent.delay);
demoEvent.Play(transform);
}
}
[System.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);
}
}
}
}