diff --git a/Assets/Scenes/Level01/Level 01.unity b/Assets/Scenes/Level01/Level 01.unity index bf582973d4442d27a6a0bbbc4790977b8702a9a7..dc4269ad241c2bb0e68c57a66e72ab6587aa9985 100644 --- a/Assets/Scenes/Level01/Level 01.unity +++ b/Assets/Scenes/Level01/Level 01.unity @@ -379,7 +379,6 @@ MonoBehaviour: maxSpawnThreshold: 5 maxMobs: 10 mobs: {fileID: 1735848183} - Difficulty: 0 --- !u!4 &53082948 Transform: m_ObjectHideFlags: 0 @@ -778,7 +777,10 @@ PrefabInstance: m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] - m_AddedComponents: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 100000, guid: ea3c2728ef33e3a4d99527a86cda6465, type: 3} + insertIndex: -1 + addedObject: {fileID: 1735848195} m_SourcePrefab: {fileID: 100100000, guid: ea3c2728ef33e3a4d99527a86cda6465, type: 3} --- !u!1 &309555341 GameObject: @@ -3632,6 +3634,20 @@ GameObject: m_CorrespondingSourceObject: {fileID: 100000, guid: ea3c2728ef33e3a4d99527a86cda6465, type: 3} m_PrefabInstance: {fileID: 271723661} m_PrefabAsset: {fileID: 0} +--- !u!114 &1735848195 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735848183} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 755d1ab8f0094ef9bbea12900a89c442, type: 3} + m_Name: + m_EditorClassIdentifier: + distanceThreshold: 10 + damagePerSecond: 1 --- !u!1 &1761018070 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/EnemyR/KerocoBehavior.cs b/Assets/Scripts/EnemyR/KerocoBehavior.cs new file mode 100644 index 0000000000000000000000000000000000000000..f8720c1f6d6e5654ee87a653ef9f1bc77d7bf1f2 --- /dev/null +++ b/Assets/Scripts/EnemyR/KerocoBehavior.cs @@ -0,0 +1,60 @@ +using System.Collections; +using UnityEngine; +public class KerocoBehavior: MonoBehaviour +{ + public float distanceThreshold = 10f; + public float damagePerSecond = 1f; + protected GameObject Player; + protected PlayerManager PlayerManager; + + protected bool CoroutineStarted; + + protected virtual void Awake() + { + Player = GameObject.Find("PlayerOnly"); + PlayerManager = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerManager>(); + } + + void OnDestroy() + { + StopCoroutine(nameof(ApplyToPlayer)); + } + + void Update() + { + if (CoroutineStarted) return; + + if (WithinDistance()) + { + StartCoroutine(nameof(ApplyToPlayer)); + CoroutineStarted = true; + } + } + + private bool WithinDistance() => Vector3.Distance(Player.transform.position, transform.position) < distanceThreshold; + + protected IEnumerator ApplyToPlayer() + { + while (true) { + yield return new WaitForSeconds(1f); + ApplyEffectsToPlayer(); + + if (!WithinDistance()) + { + DispelEffects(); + CoroutineStarted = false; + break; + } + } + } + + protected virtual void ApplyEffectsToPlayer() + { + PlayerManager.TakeDamage(damagePerSecond); + } + + protected virtual void DispelEffects() + { + + } +} diff --git a/Assets/Scripts/EnemyR/KerocoBehavior.cs.meta b/Assets/Scripts/EnemyR/KerocoBehavior.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..8f958e58d257ae8c03824c4a22d03f2d909a309d --- /dev/null +++ b/Assets/Scripts/EnemyR/KerocoBehavior.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 85a88340cf844d54a717fbd6fc9c10dc +timeCreated: 1715302858 \ No newline at end of file