diff --git a/Assets/Code/Scripts/Enemies/LivingRoot/RootCrawler/RootCrawler.cs b/Assets/Code/Scripts/Enemies/LivingRoot/RootCrawler/RootCrawler.cs index 19f26bf..694978c 100644 --- a/Assets/Code/Scripts/Enemies/LivingRoot/RootCrawler/RootCrawler.cs +++ b/Assets/Code/Scripts/Enemies/LivingRoot/RootCrawler/RootCrawler.cs @@ -2,15 +2,20 @@ using UnityEngine; public class RootCrawler : MonoBehaviour { - // Start is called once before the first execution of Update after the MonoBehaviour is created - void Start() - { - - } + + public Transform target; + public float maxHeight; + public float crawlingSpeed; + + private float height = 0f; // Update is called once per frame void Update() { - + if (target == null) + return; + height += Time.deltaTime * crawlingSpeed; + height = Mathf.Clamp(height, 0f, maxHeight); + transform.position = target.position + Vector3.up * height; } } diff --git a/Assets/Code/Scripts/Enemies/LivingRoot/SlowdownArea.cs b/Assets/Code/Scripts/Enemies/LivingRoot/SlowdownArea.cs index 1ef051e..7782eca 100644 --- a/Assets/Code/Scripts/Enemies/LivingRoot/SlowdownArea.cs +++ b/Assets/Code/Scripts/Enemies/LivingRoot/SlowdownArea.cs @@ -7,12 +7,15 @@ public class SlowdownArea : MonoBehaviour public float maxSlow; public float slowSpeed; public float timer; - + + [Header("Root Crawler")] + public GameObject rootCrawlerPrefab; private float baseJump; private bool isInZone = false; private PlayerMovement player; private PlayerJump jump; + private GameObject currentCrawler; private void OnTriggerEnter(Collider area) { @@ -22,18 +25,25 @@ public class SlowdownArea : MonoBehaviour baseJump = 5.0f; jump.JumpForce = 1.5f; isInZone = true; + if (currentCrawler == null) { + currentCrawler = Instantiate(rootCrawlerPrefab, player.transform.position, Quaternion.identity); + RootCrawler crawler = currentCrawler.GetComponent(); + crawler.target = player.transform; + } } } private void OnTriggerExit(Collider area) { - if (area.CompareTag("Player")) - { + if (area.CompareTag("Player")) { isInZone = false; timer = 0f; player.ApplySlow(1f); player.ApplyAnimationSlow(1f); jump.JumpForce = baseJump; + if (currentCrawler != null) { + Destroy(currentCrawler); + } } } diff --git a/Assets/Level/Prefabs/Enemies.meta b/Assets/Level/Prefabs/Enemies.meta new file mode 100644 index 0000000..29ccd8e --- /dev/null +++ b/Assets/Level/Prefabs/Enemies.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7c55dd8d2533a9affb8abf17f934af76 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Level/Prefabs/Enemies/LivingRoot.meta b/Assets/Level/Prefabs/Enemies/LivingRoot.meta new file mode 100644 index 0000000..d4aefb4 --- /dev/null +++ b/Assets/Level/Prefabs/Enemies/LivingRoot.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f50a662a00513985cabe01d57e553530 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Level/Prefabs/Enemies/LivingRoot/rootCrawler.prefab b/Assets/Level/Prefabs/Enemies/LivingRoot/rootCrawler.prefab new file mode 100644 index 0000000..6d80f96 --- /dev/null +++ b/Assets/Level/Prefabs/Enemies/LivingRoot/rootCrawler.prefab @@ -0,0 +1,251 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1843330507631451878 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7919538883693841265} + - component: {fileID: 344069317130189608} + - component: {fileID: 4811596309560135411} + m_Layer: 0 + m_Name: rootCrawler + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7919538883693841265 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1843330507631451878} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.2, y: 9.29, z: -1.74} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3116162970488227892} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!96 &344069317130189608 +TrailRenderer: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1843330507631451878} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 0} + 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_Time: 5 + m_PreviewTimeScale: 1 + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.21667099 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 0, g: 0, b: 0, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 6554 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MinVertexDistance: 0.1 + m_Autodestruct: 0 + m_Emitting: 1 + m_ApplyActiveColorSpace: 1 +--- !u!114 &4811596309560135411 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1843330507631451878} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 32b713897b19bfd9fbc1d58800761b20, type: 3} + m_Name: + m_EditorClassIdentifier: '::' + target: {fileID: 0} + maxHeight: 3 + crawlingSpeed: 1 +--- !u!1 &8507854225114473222 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3116162970488227892} + - component: {fileID: 6883716734630436355} + - component: {fileID: 6035361235411756981} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3116162970488227892 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8507854225114473222} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -15.4, y: 0, z: 8.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7919538883693841265} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6883716734630436355 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8507854225114473222} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6035361235411756981 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8507854225114473222} + m_Enabled: 0 + 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_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/Level/Prefabs/Enemies/LivingRoot/rootCrawler.prefab.meta b/Assets/Level/Prefabs/Enemies/LivingRoot/rootCrawler.prefab.meta new file mode 100644 index 0000000..3475e9d --- /dev/null +++ b/Assets/Level/Prefabs/Enemies/LivingRoot/rootCrawler.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6b31f01266896d3bb88e98a31080bb65 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: