Add: Activable trigger system

Trigger system that can activate/deactivate things
This commit is contained in:
Banane_Rotative
2026-01-19 22:59:26 +01:00
parent bda9e7283b
commit 7a29ab094c
9 changed files with 365 additions and 1 deletions

View File

@@ -759,6 +759,52 @@ MonoBehaviour:
m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0}
m_SoftShadowQuality: 1
--- !u!1 &432444065
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 432444066}
- component: {fileID: 432444067}
m_Layer: 0
m_Name: Triggerable music
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &432444066
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 432444065}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1512154480}
m_Father: {fileID: 621578838}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &432444067
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 432444065}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0c3454cc62eba27469e9581fb0fb8703, type: 3}
m_Name:
m_EditorClassIdentifier:
music: {fileID: 1512154481}
--- !u!1 &493760349
GameObject:
m_ObjectHideFlags: 0
@@ -814,6 +860,130 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 5a895e8a798ee0b4a9a5ea33d6b07f4b, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &621578834
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 621578838}
- component: {fileID: 621578837}
- component: {fileID: 621578836}
- component: {fileID: 621578835}
- component: {fileID: 621578839}
m_Layer: 0
m_Name: TriggerZone
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!65 &621578835
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 621578834}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &621578836
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 621578834}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &621578837
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 621578834}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &621578838
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 621578834}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 4.22, y: 0.71, z: -7.71}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 432444066}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &621578839
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 621578834}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: eb3300468ed86d74d9fce3c293a89442, type: 3}
m_Name:
m_EditorClassIdentifier:
activableTriggers:
- {fileID: 432444067}
--- !u!1 &990919146
GameObject:
m_ObjectHideFlags: 0
@@ -857,6 +1027,7 @@ GameObject:
- component: {fileID: 1192843595}
- component: {fileID: 1192843594}
- component: {fileID: 1192843593}
- component: {fileID: 1192843596}
m_Layer: 0
m_Name: Slope
m_TagString: Untagged
@@ -876,7 +1047,8 @@ Transform:
m_LocalPosition: {x: -5.5, y: 1.13, z: -6.62}
m_LocalScale: {x: 0.5, y: 1, z: 0.5}
m_ConstrainProportionsScale: 0
m_Children: []
m_Children:
- {fileID: 1646350200}
m_Father: {fileID: 90518572}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: -28.7}
--- !u!64 &1192843593
@@ -954,6 +1126,110 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1192843591}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!114 &1192843596
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1192843591}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce02cde7ea924d943a1cae7e8fa23c97, type: 3}
m_Name:
m_EditorClassIdentifier:
triggerables:
- {fileID: 1646350201}
--- !u!1 &1512154479
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1512154480}
- component: {fileID: 1512154481}
m_Layer: 0
m_Name: Music
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1512154480
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1512154479}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 432444066}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1512154481
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1512154479}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 287885c28387db147b2ed37b247e9fc2, type: 3}
m_Name:
m_EditorClassIdentifier:
sound: {fileID: 8300000, guid: 2e41a111eebf71843a1cbf93be5a9e1c, type: 3}
--- !u!1 &1646350199
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1646350200}
- component: {fileID: 1646350201}
m_Layer: 0
m_Name: Triggerable sound
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1646350200
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1646350199}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -12.26, y: -0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1192843592}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1646350201
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1646350199}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f05e67e6db6841f45b446a26d1d0d31d, type: 3}
m_Name:
m_EditorClassIdentifier:
audioSource: {fileID: 8300000, guid: 2e41a111eebf71843a1cbf93be5a9e1c, type: 3}
--- !u!1 &1697224667
GameObject:
m_ObjectHideFlags: 0
@@ -1279,3 +1555,4 @@ SceneRoots:
- {fileID: 90518572}
- {fileID: 266152667}
- {fileID: 169666005}
- {fileID: 621578838}

View File

@@ -0,0 +1,26 @@
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// An abstract class for anything that needs to trigger activable events (on/off state)
/// </summary>
public abstract class IActivableTrigger : MonoBehaviour
{
[SerializeField] List<IActivableTriggerable> activableTriggers;
protected void OnTriggerActivate()
{
foreach (IActivableTriggerable activableTrigger in activableTriggers)
{
activableTrigger.OnTriggerActivate();
}
}
protected void OnTriggerDeactivate()
{
foreach (IActivableTriggerable activableTrigger in activableTriggers)
{
activableTrigger.OnTriggerDeactivate();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: a01a8874461ebab4fb27d80b3864597a

View File

@@ -0,0 +1,18 @@
using UnityEngine;
/// <summary>
/// An area that triggers when colliding (triggers once when entering, once when exiting)
/// </summary>
[RequireComponent(typeof(Collider))]
public class TriggerArea : IActivableTrigger
{
private void OnTriggerEnter(Collider other)
{
OnTriggerActivate();
}
private void OnTriggerExit(Collider other)
{
OnTriggerDeactivate();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: eb3300468ed86d74d9fce3c293a89442

View File

@@ -0,0 +1,10 @@
using UnityEngine;
/// <summary>
/// An abstract class for any triggerable object that has an on/off state
/// </summary>
public abstract class IActivableTriggerable : MonoBehaviour
{
public abstract void OnTriggerActivate();
public abstract void OnTriggerDeactivate();
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 64b9105c3da058a4698864040a90a844

View File

@@ -0,0 +1,25 @@
using UnityEngine;
/// <summary>
/// A triggerable music. Trigger can activate and deactivate the music.
/// </summary>
public class TriggerableMusic : IActivableTriggerable
{
[SerializeField] ILoopableSound music;
public override void OnTriggerActivate()
{
if (music != null)
{
MusicManager.Instance.StartMusic(music);
}
}
public override void OnTriggerDeactivate()
{
if (music != null)
{
MusicManager.Instance.StopMusic(music);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 0c3454cc62eba27469e9581fb0fb8703