From bda9e7283be8cd427d3763c2acb173ab13ebb491 Mon Sep 17 00:00:00 2001 From: Banane_Rotative Date: Mon, 19 Jan 2026 22:58:25 +0100 Subject: [PATCH] Add: trigger system Trigger system that can activate any event --- Assets/Scripts/Trigger.meta | 8 ++++++ Assets/Scripts/Trigger/Trigger.meta | 8 ++++++ Assets/Scripts/Trigger/Trigger/ITrigger.cs | 26 +++++++++++++++++++ .../Scripts/Trigger/Trigger/ITrigger.cs.meta | 2 ++ .../Trigger/Trigger/TriggerCollision.cs | 17 ++++++++++++ .../Trigger/Trigger/TriggerCollision.cs.meta | 2 ++ Assets/Scripts/Trigger/Triggerable.meta | 8 ++++++ .../Trigger/Triggerable/ITriggerable.cs | 10 +++++++ .../Trigger/Triggerable/ITriggerable.cs.meta | 2 ++ .../Trigger/Triggerable/TriggerableSound.cs | 25 ++++++++++++++++++ .../Triggerable/TriggerableSound.cs.meta | 2 ++ 11 files changed, 110 insertions(+) create mode 100644 Assets/Scripts/Trigger.meta create mode 100644 Assets/Scripts/Trigger/Trigger.meta create mode 100644 Assets/Scripts/Trigger/Trigger/ITrigger.cs create mode 100644 Assets/Scripts/Trigger/Trigger/ITrigger.cs.meta create mode 100644 Assets/Scripts/Trigger/Trigger/TriggerCollision.cs create mode 100644 Assets/Scripts/Trigger/Trigger/TriggerCollision.cs.meta create mode 100644 Assets/Scripts/Trigger/Triggerable.meta create mode 100644 Assets/Scripts/Trigger/Triggerable/ITriggerable.cs create mode 100644 Assets/Scripts/Trigger/Triggerable/ITriggerable.cs.meta create mode 100644 Assets/Scripts/Trigger/Triggerable/TriggerableSound.cs create mode 100644 Assets/Scripts/Trigger/Triggerable/TriggerableSound.cs.meta diff --git a/Assets/Scripts/Trigger.meta b/Assets/Scripts/Trigger.meta new file mode 100644 index 0000000..4512752 --- /dev/null +++ b/Assets/Scripts/Trigger.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ff2572641226ba24f8e06342e11d6dc6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Trigger/Trigger.meta b/Assets/Scripts/Trigger/Trigger.meta new file mode 100644 index 0000000..58713e0 --- /dev/null +++ b/Assets/Scripts/Trigger/Trigger.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b7081abff2504cd488ce34e2964895f5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Trigger/Trigger/ITrigger.cs b/Assets/Scripts/Trigger/Trigger/ITrigger.cs new file mode 100644 index 0000000..7865ae3 --- /dev/null +++ b/Assets/Scripts/Trigger/Trigger/ITrigger.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; +using UnityEngine; + +/// +/// An abstract class for anything that needs to trigger one-shot events +/// +public abstract class ITrigger : MonoBehaviour +{ + [SerializeField] List triggerables; + + protected void OnTrigger(Vector3 position) + { + foreach (ITriggerable triggerable in triggerables) + { + triggerable.Trigger(position); + } + } + + protected void OnTrigger() + { + foreach (var triggerable in triggerables) + { + triggerable.Trigger(); + } + } +} diff --git a/Assets/Scripts/Trigger/Trigger/ITrigger.cs.meta b/Assets/Scripts/Trigger/Trigger/ITrigger.cs.meta new file mode 100644 index 0000000..c82933b --- /dev/null +++ b/Assets/Scripts/Trigger/Trigger/ITrigger.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5b27634977cf89f4897128f2bfc9c40e \ No newline at end of file diff --git a/Assets/Scripts/Trigger/Trigger/TriggerCollision.cs b/Assets/Scripts/Trigger/Trigger/TriggerCollision.cs new file mode 100644 index 0000000..facf06c --- /dev/null +++ b/Assets/Scripts/Trigger/Trigger/TriggerCollision.cs @@ -0,0 +1,17 @@ +using UnityEngine; + +/// +/// A collision trigger that triggers one-shot event when colliding with an object +/// +[RequireComponent(typeof(Collider))] +public class TriggerCollision : ITrigger +{ + private void OnCollisionEnter(Collision collision) + { + if (collision.contactCount > 0) + { + Vector3 contactPoint = collision.GetContact(0).point; + OnTrigger(contactPoint); + } + } +} diff --git a/Assets/Scripts/Trigger/Trigger/TriggerCollision.cs.meta b/Assets/Scripts/Trigger/Trigger/TriggerCollision.cs.meta new file mode 100644 index 0000000..069c057 --- /dev/null +++ b/Assets/Scripts/Trigger/Trigger/TriggerCollision.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ce02cde7ea924d943a1cae7e8fa23c97 \ No newline at end of file diff --git a/Assets/Scripts/Trigger/Triggerable.meta b/Assets/Scripts/Trigger/Triggerable.meta new file mode 100644 index 0000000..dddacce --- /dev/null +++ b/Assets/Scripts/Trigger/Triggerable.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 923b6e673582c4b4487ef8daea9b0bd2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Trigger/Triggerable/ITriggerable.cs b/Assets/Scripts/Trigger/Triggerable/ITriggerable.cs new file mode 100644 index 0000000..aece3dc --- /dev/null +++ b/Assets/Scripts/Trigger/Triggerable/ITriggerable.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +/// +/// An abstract class for any triggerable object +/// +public abstract class ITriggerable : MonoBehaviour +{ + public abstract void Trigger(); + public abstract void Trigger(Vector3 position); +} diff --git a/Assets/Scripts/Trigger/Triggerable/ITriggerable.cs.meta b/Assets/Scripts/Trigger/Triggerable/ITriggerable.cs.meta new file mode 100644 index 0000000..677c4f2 --- /dev/null +++ b/Assets/Scripts/Trigger/Triggerable/ITriggerable.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: db3db78b9c1317d42abe3ef387daea90 \ No newline at end of file diff --git a/Assets/Scripts/Trigger/Triggerable/TriggerableSound.cs b/Assets/Scripts/Trigger/Triggerable/TriggerableSound.cs new file mode 100644 index 0000000..f042a81 --- /dev/null +++ b/Assets/Scripts/Trigger/Triggerable/TriggerableSound.cs @@ -0,0 +1,25 @@ +using UnityEngine; + +/// +/// A triggerable sound. Trigger plays the sound. +/// +public class TriggerableSound : ITriggerable +{ + [SerializeField] AudioClip audioSource; + + public override void Trigger() + { + if (audioSource != null) + { + SoundManager.Instance.PlaySoundAt(transform.position, audioSource); + } + } + + public override void Trigger(Vector3 position) + { + if (audioSource != null) + { + SoundManager.Instance.PlaySoundAt(position, audioSource); + } + } +} diff --git a/Assets/Scripts/Trigger/Triggerable/TriggerableSound.cs.meta b/Assets/Scripts/Trigger/Triggerable/TriggerableSound.cs.meta new file mode 100644 index 0000000..059967f --- /dev/null +++ b/Assets/Scripts/Trigger/Triggerable/TriggerableSound.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f05e67e6db6841f45b446a26d1d0d31d \ No newline at end of file