mirror of
https://github.com/appen-isen/jeu-sans-image.git
synced 2026-03-18 21:50:42 +01:00
Add: trigger system
Trigger system that can activate any event
This commit is contained in:
8
Assets/Scripts/Trigger.meta
Normal file
8
Assets/Scripts/Trigger.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ff2572641226ba24f8e06342e11d6dc6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Scripts/Trigger/Trigger.meta
Normal file
8
Assets/Scripts/Trigger/Trigger.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b7081abff2504cd488ce34e2964895f5
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
26
Assets/Scripts/Trigger/Trigger/ITrigger.cs
Normal file
26
Assets/Scripts/Trigger/Trigger/ITrigger.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// An abstract class for anything that needs to trigger one-shot events
|
||||
/// </summary>
|
||||
public abstract class ITrigger : MonoBehaviour
|
||||
{
|
||||
[SerializeField] List<ITriggerable> triggerables;
|
||||
|
||||
protected void OnTrigger(Vector3 position)
|
||||
{
|
||||
foreach (ITriggerable triggerable in triggerables)
|
||||
{
|
||||
triggerable.Trigger(position);
|
||||
}
|
||||
}
|
||||
|
||||
protected void OnTrigger()
|
||||
{
|
||||
foreach (var triggerable in triggerables)
|
||||
{
|
||||
triggerable.Trigger();
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/Trigger/Trigger/ITrigger.cs.meta
Normal file
2
Assets/Scripts/Trigger/Trigger/ITrigger.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5b27634977cf89f4897128f2bfc9c40e
|
||||
17
Assets/Scripts/Trigger/Trigger/TriggerCollision.cs
Normal file
17
Assets/Scripts/Trigger/Trigger/TriggerCollision.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// A collision trigger that triggers one-shot event when colliding with an object
|
||||
/// </summary>
|
||||
[RequireComponent(typeof(Collider))]
|
||||
public class TriggerCollision : ITrigger
|
||||
{
|
||||
private void OnCollisionEnter(Collision collision)
|
||||
{
|
||||
if (collision.contactCount > 0)
|
||||
{
|
||||
Vector3 contactPoint = collision.GetContact(0).point;
|
||||
OnTrigger(contactPoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/Trigger/Trigger/TriggerCollision.cs.meta
Normal file
2
Assets/Scripts/Trigger/Trigger/TriggerCollision.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ce02cde7ea924d943a1cae7e8fa23c97
|
||||
8
Assets/Scripts/Trigger/Triggerable.meta
Normal file
8
Assets/Scripts/Trigger/Triggerable.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 923b6e673582c4b4487ef8daea9b0bd2
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
10
Assets/Scripts/Trigger/Triggerable/ITriggerable.cs
Normal file
10
Assets/Scripts/Trigger/Triggerable/ITriggerable.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// An abstract class for any triggerable object
|
||||
/// </summary>
|
||||
public abstract class ITriggerable : MonoBehaviour
|
||||
{
|
||||
public abstract void Trigger();
|
||||
public abstract void Trigger(Vector3 position);
|
||||
}
|
||||
2
Assets/Scripts/Trigger/Triggerable/ITriggerable.cs.meta
Normal file
2
Assets/Scripts/Trigger/Triggerable/ITriggerable.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db3db78b9c1317d42abe3ef387daea90
|
||||
25
Assets/Scripts/Trigger/Triggerable/TriggerableSound.cs
Normal file
25
Assets/Scripts/Trigger/Triggerable/TriggerableSound.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// A triggerable sound. Trigger plays the sound.
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f05e67e6db6841f45b446a26d1d0d31d
|
||||
Reference in New Issue
Block a user