From 7a0330f88ec484a2fa85975bbd77a01b3f90eda2 Mon Sep 17 00:00:00 2001 From: Hazim Bin Ijaz Date: Mon, 11 Aug 2025 13:57:28 +0500 Subject: [PATCH] Added UI Management for mana and health --- .../Scenes/DemoExterior.unity | 532 ++++++++++++------ Assets/Prefabs.meta | 8 + Assets/Prefabs/Character.prefab | 290 ++++++++++ Assets/Prefabs/Character.prefab.meta | 7 + Assets/Prefabs/UI.meta | 8 + Assets/Prefabs/UI/Bar.prefab | 189 +++++++ Assets/Prefabs/UI/Bar.prefab.meta | 7 + Assets/Scripts/Resources/HealthManager.cs | 49 +- Assets/Scripts/Resources/ManaManager.cs | 45 +- Assets/UI.meta | 8 + Assets/UI/2x2_Texture.png | Bin 0 -> 17251 bytes Assets/UI/2x2_Texture.png.meta | 153 +++++ 12 files changed, 1119 insertions(+), 177 deletions(-) create mode 100644 Assets/Prefabs.meta create mode 100644 Assets/Prefabs/Character.prefab create mode 100644 Assets/Prefabs/Character.prefab.meta create mode 100644 Assets/Prefabs/UI.meta create mode 100644 Assets/Prefabs/UI/Bar.prefab create mode 100644 Assets/Prefabs/UI/Bar.prefab.meta create mode 100644 Assets/UI.meta create mode 100644 Assets/UI/2x2_Texture.png create mode 100644 Assets/UI/2x2_Texture.png.meta diff --git a/Assets/Polyart/PolyartStudio/DreamscapeCastle/Scenes/DemoExterior.unity b/Assets/Polyart/PolyartStudio/DreamscapeCastle/Scenes/DemoExterior.unity index 79105539..58cd7d74 100644 --- a/Assets/Polyart/PolyartStudio/DreamscapeCastle/Scenes/DemoExterior.unity +++ b/Assets/Polyart/PolyartStudio/DreamscapeCastle/Scenes/DemoExterior.unity @@ -12378,7 +12378,9 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 1053253995} + - {fileID: 1676488288} m_Father: {fileID: 812152301} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -15467,12 +15469,6 @@ Transform: type: 3} m_PrefabInstance: {fileID: 108509478} m_PrefabAsset: {fileID: 0} ---- !u!1 &109262111 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 4680818796634823330, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - m_PrefabInstance: {fileID: 757714195} - m_PrefabAsset: {fileID: 0} --- !u!1 &110296706 stripped GameObject: m_CorrespondingSourceObject: {fileID: 1030975172, guid: abc00000000014995704704072955557, @@ -116517,161 +116513,6 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 757252437} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1001 &757714195 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4680818796634823330, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_Name - value: Character - objectReference: {fileID: 0} - - target: {fileID: 4680818796634823330, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4680818796634823330, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_TagString - value: Player - objectReference: {fileID: 0} - - target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_RootOrder - value: 306 - objectReference: {fileID: 0} - - target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_LocalPosition.x - value: 123.2 - objectReference: {fileID: 0} - - target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_LocalPosition.y - value: 29.097 - objectReference: {fileID: 0} - - target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_LocalPosition.z - value: 338.48 - objectReference: {fileID: 0} - - target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4680818797271520422, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_RenderingPath - value: -1 - objectReference: {fileID: 0} - - target: {fileID: 4680818797271520422, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_BackGroundColor.a - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4680818797271520422, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_BackGroundColor.b - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4680818797271520422, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_BackGroundColor.g - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4680818797271520422, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_BackGroundColor.r - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4680818797271520422, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - propertyPath: m_AllowDynamicResolution - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: - - targetCorrespondingSourceObject: {fileID: 4680818796634823330, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - insertIndex: -1 - addedObject: {fileID: 757714200} - - targetCorrespondingSourceObject: {fileID: 4680818796634823330, guid: dc3f4998066447e4ebccba9fefe0f278, - type: 3} - insertIndex: -1 - addedObject: {fileID: 757714199} - m_SourcePrefab: {fileID: 100100000, guid: dc3f4998066447e4ebccba9fefe0f278, type: 3} ---- !u!114 &757714199 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 109262111} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6ae53beee9ce9b24097289adbb0d7d5e, type: 3} - m_Name: - m_EditorClassIdentifier: - maxMana: 100 - mana: 100 - enableRegen: 1 - regenPerSecond: 8 - regenDelayAfterSpend: 1 ---- !u!114 &757714200 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 109262111} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7318ee1be010c1e43b9f45dbbe3a8d9d, type: 3} - m_Name: - m_EditorClassIdentifier: - maxHealth: 100 - health: 100 - enableRegen: 1 - regenPerSecond: 1.5 - regenDelayAfterDamage: 4 --- !u!1001 &757733958 PrefabInstance: m_ObjectHideFlags: 0 @@ -164991,6 +164832,142 @@ Transform: type: 3} m_PrefabInstance: {fileID: 1052851453} m_PrefabAsset: {fileID: 0} +--- !u!1001 &1053253994 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 94165390} + m_Modifications: + - target: {fileID: 1244597452191189718, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_Name + value: HealthBar + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_SizeDelta.x + value: 900 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_SizeDelta.y + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 470 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -150 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 951d711b27ffb9243b942d8d2c45e042, type: 3} +--- !u!224 &1053253995 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + m_PrefabInstance: {fileID: 1053253994} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1053253996 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4521506559915874773, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + m_PrefabInstance: {fileID: 1053253994} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1001 &1053499535 PrefabInstance: m_ObjectHideFlags: 0 @@ -275880,6 +275857,157 @@ Transform: type: 3} m_PrefabInstance: {fileID: 1674965808} m_PrefabAsset: {fileID: 0} +--- !u!1001 &1676488287 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 94165390} + m_Modifications: + - target: {fileID: 1244597452191189718, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_Name + value: ManaBar + objectReference: {fileID: 0} + - target: {fileID: 4521506559915874773, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_Color.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4521506559915874773, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_Color.g + value: 0.8594818 + objectReference: {fileID: 0} + - target: {fileID: 4521506559915874773, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_Color.r + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_SizeDelta.x + value: 900 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_SizeDelta.y + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 470 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -93 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 951d711b27ffb9243b942d8d2c45e042, type: 3} +--- !u!224 &1676488288 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + m_PrefabInstance: {fileID: 1676488287} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1676488289 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4521506559915874773, guid: 951d711b27ffb9243b942d8d2c45e042, + type: 3} + m_PrefabInstance: {fileID: 1676488287} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1001 &1677015364 PrefabInstance: m_ObjectHideFlags: 0 @@ -353825,6 +353953,84 @@ Transform: - {fileID: 274935958} m_Father: {fileID: 226261319} m_LocalEulerAnglesHint: {x: 0, y: -143.87, z: 0} +--- !u!1001 &2042403783257441060 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3960509566317876621, guid: 576abe9759f86e542b8cee9ae2f0ffd7, + type: 3} + propertyPath: m_Name + value: Character + objectReference: {fileID: 0} + - target: {fileID: 4580555029999605212, guid: 576abe9759f86e542b8cee9ae2f0ffd7, + type: 3} + propertyPath: manaFillImage + value: + objectReference: {fileID: 1676488289} + - target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7, + type: 3} + propertyPath: m_LocalPosition.x + value: 123.2 + objectReference: {fileID: 0} + - target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7, + type: 3} + propertyPath: m_LocalPosition.y + value: 29.097 + objectReference: {fileID: 0} + - target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7, + type: 3} + propertyPath: m_LocalPosition.z + value: 338.48 + objectReference: {fileID: 0} + - target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8831903355050671002, guid: 576abe9759f86e542b8cee9ae2f0ffd7, + type: 3} + propertyPath: healthFillImage + value: + objectReference: {fileID: 1053253996} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 576abe9759f86e542b8cee9ae2f0ffd7, type: 3} --- !u!1001 &2612565535725099600 PrefabInstance: m_ObjectHideFlags: 0 @@ -354828,6 +355034,6 @@ SceneRoots: m_ObjectHideFlags: 0 m_Roots: - {fileID: 1161484236} - - {fileID: 757714195} + - {fileID: 2042403783257441060} - {fileID: 812152301} - {fileID: 1282845313} diff --git a/Assets/Prefabs.meta b/Assets/Prefabs.meta new file mode 100644 index 00000000..5cc0010d --- /dev/null +++ b/Assets/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0119bd38f60eb6a4abc2ac4eac15d265 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Character.prefab b/Assets/Prefabs/Character.prefab new file mode 100644 index 00000000..193ebc5b --- /dev/null +++ b/Assets/Prefabs/Character.prefab @@ -0,0 +1,290 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2191382144852172495 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8295047734135990781} + - component: {fileID: 4646540326165960552} + - component: {fileID: 8919498076661180667} + - component: {fileID: 6687888136625202998} + m_Layer: 0 + m_Name: MainCamera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8295047734135990781 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191382144852172495} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.873, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6446424649472988537} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &4646540326165960552 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191382144852172495} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 10000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!81 &8919498076661180667 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191382144852172495} + m_Enabled: 1 +--- !u!114 &6687888136625202998 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191382144852172495} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 1 + m_Antialiasing: 3 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 +--- !u!1 &3960509566317876621 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6446424649472988537} + - component: {fileID: 7291163819938778696} + - component: {fileID: 5031743721561312927} + - component: {fileID: 8831903355050671002} + - component: {fileID: 4580555029999605212} + m_Layer: 0 + m_Name: Character + m_TagString: Player + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6446424649472988537 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3960509566317876621} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 123.2, y: 29.097, z: 338.48} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8295047734135990781} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!143 &7291163819938778696 +CharacterController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3960509566317876621} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Height: 2 + m_Radius: 0.5 + m_SlopeLimit: 45 + m_StepOffset: 0.3 + m_SkinWidth: 0.08 + m_MinMoveDistance: 0.001 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &5031743721561312927 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3960509566317876621} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fd55d7d9f01c1f144891ce8894793b9b, type: 3} + m_Name: + m_EditorClassIdentifier: + canSprint: 1 + canJump: 1 + canCrouch: 1 + canHeadBob: 1 + canInteract: 1 + useFootsteps: 0 + sprintKey: 304 + jumpKey: 32 + crouchKey: 306 + interactKey: 101 + interactionRayPoint: {x: 0, y: 0, z: 0} + interactionDistance: 0 + interactionLayer: + serializedVersion: 2 + m_Bits: 0 + walkSpeed: 6 + sprintSpeed: 12 + crouchSpeed: 1.5 + lookSpeedX: 2 + lookSpeedY: 2 + lowerLookLimit: 80 + upperLookLimit: 80 + jumpForce: 8 + gravity: 30 + crouchHeight: 0.5 + standinghHeight: 2 + timeToCrouch: 0.25 + crouchCenter: {x: 0, y: 0.5, z: 0} + standingCenter: {x: 0, y: 0, z: 0} + walkBobSpeed: 14 + walkBobAmount: 0.05 + sprintBobSpeed: 18 + sprintBobAmount: 0.11 + baseStepSpeed: 0.5 + crouchStepMultiplier: 1.5 + sprintStepMultiplier: 0.6 + footstepAudioSource: {fileID: 0} + woodClips: [] + stoneClips: [] + waterClips: [] + grassClips: [] +--- !u!114 &8831903355050671002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3960509566317876621} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7318ee1be010c1e43b9f45dbbe3a8d9d, type: 3} + m_Name: + m_EditorClassIdentifier: + maxHealth: 100 + health: 100 + enableRegen: 1 + regenPerSecond: 1.5 + regenDelayAfterDamage: 8 + healthFillImage: {fileID: 0} +--- !u!114 &4580555029999605212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3960509566317876621} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6ae53beee9ce9b24097289adbb0d7d5e, type: 3} + m_Name: + m_EditorClassIdentifier: + maxMana: 100 + mana: 100 + enableRegen: 1 + regenPerSecond: 8 + regenDelayAfterSpend: 8 + manaFillImage: {fileID: 0} diff --git a/Assets/Prefabs/Character.prefab.meta b/Assets/Prefabs/Character.prefab.meta new file mode 100644 index 00000000..950d7663 --- /dev/null +++ b/Assets/Prefabs/Character.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 576abe9759f86e542b8cee9ae2f0ffd7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/UI.meta b/Assets/Prefabs/UI.meta new file mode 100644 index 00000000..73732155 --- /dev/null +++ b/Assets/Prefabs/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6cf0ee6f7b2d38346b09b10f4ec81a84 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/UI/Bar.prefab b/Assets/Prefabs/UI/Bar.prefab new file mode 100644 index 00000000..18f0b741 --- /dev/null +++ b/Assets/Prefabs/UI/Bar.prefab @@ -0,0 +1,189 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &147923091762810145 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2581067900589736530} + - component: {fileID: 8433273748947172046} + - component: {fileID: 4521506559915874773} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2581067900589736530 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147923091762810145} + 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: 3771816303656470919} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 900, y: 24} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8433273748947172046 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147923091762810145} + m_CullTransparentMesh: 1 +--- !u!114 &4521506559915874773 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147923091762810145} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: d0f7dbe30dfbcf74498876fedf52ea7a, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 0 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1244597452191189718 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7172057295676675169} + m_Layer: 5 + m_Name: Bar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7172057295676675169 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1244597452191189718} + 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: 3771816303656470919} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 471, y: 100} + m_SizeDelta: {x: 900, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4999473199987106019 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3771816303656470919} + - component: {fileID: 8197332393511138946} + - component: {fileID: 1752518680494453832} + m_Layer: 5 + m_Name: BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3771816303656470919 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4999473199987106019} + 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: 2581067900589736530} + m_Father: {fileID: 7172057295676675169} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 900, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8197332393511138946 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4999473199987106019} + m_CullTransparentMesh: 1 +--- !u!114 &1752518680494453832 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4999473199987106019} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: d0f7dbe30dfbcf74498876fedf52ea7a, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 diff --git a/Assets/Prefabs/UI/Bar.prefab.meta b/Assets/Prefabs/UI/Bar.prefab.meta new file mode 100644 index 00000000..09e766c2 --- /dev/null +++ b/Assets/Prefabs/UI/Bar.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 951d711b27ffb9243b942d8d2c45e042 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Resources/HealthManager.cs b/Assets/Scripts/Resources/HealthManager.cs index 89e3e0d0..976dee32 100644 --- a/Assets/Scripts/Resources/HealthManager.cs +++ b/Assets/Scripts/Resources/HealthManager.cs @@ -1,7 +1,8 @@ using System.Collections; -using System.Collections.Generic; using Polyart; using UnityEngine; +using UnityEngine.UI; +using DG.Tweening; // DOTween public class HealthManager : MonoBehaviour { @@ -9,17 +10,21 @@ public class HealthManager : MonoBehaviour public float maxHealth = 100f; public float health = 100f; - [Header("Regen (optional)")] + [Header("Regen")] public bool enableRegen = true; public float regenPerSecond = 1.5f; public float regenDelayAfterDamage = 4f; + [Header("UI")] + public Image healthFillImage; // or assign an Image with fillAmount + bool isDead = false; float regenResumeTime = 0f; void Awake() { health = Mathf.Clamp(health, 0, maxHealth); + InitUI(); } void Update() @@ -28,14 +33,14 @@ public class HealthManager : MonoBehaviour if (Time.time < regenResumeTime) return; if (health >= maxHealth) return; - health = Mathf.Min(maxHealth, health + regenPerSecond * Time.deltaTime); + SetHealth(Mathf.Min(maxHealth, health + regenPerSecond * Time.deltaTime)); } public void TakeDamage(float damage) { if (isDead || damage <= 0f) return; - health = Mathf.Max(0f, health - damage); + SetHealth(Mathf.Max(0f, health - damage)); regenResumeTime = Time.time + Mathf.Max(0f, regenDelayAfterDamage); if (health <= 0f) Die(); @@ -44,11 +49,17 @@ public class HealthManager : MonoBehaviour public void Heal(float amount) { if (amount <= 0f || isDead) return; - health = Mathf.Min(maxHealth, health + amount); + SetHealth(Mathf.Min(maxHealth, health + amount)); } public bool IsDead() => isDead; + void SetHealth(float newValue) + { + health = newValue; + UpdateUI(); + } + void Die() { if (isDead) return; @@ -57,14 +68,34 @@ public class HealthManager : MonoBehaviour var anim = GetComponent(); if (anim) anim.SetTrigger("die"); - // If you have an ActionScheduler, uncomment: - // var scheduler = GetComponent(); - // if (scheduler) scheduler.CancelCurrentAction(); - var cc = GetComponent(); if (cc) cc.enabled = false; var fps = GetComponent(); if (fps) fps.enabled = false; } + + void InitUI() + { + if (healthFillImage) + healthFillImage.fillAmount = health / maxHealth; + } + + void UpdateUI() + { + if (healthFillImage) + { + healthFillImage.DOFillAmount(health / maxHealth, 0.25f).SetEase(Ease.OutCubic); + } + } + + // ===== Debug Menu ===== + [ContextMenu("Debug/Take 10 Damage")] + void DebugTakeDamage() => TakeDamage(10f); + + [ContextMenu("Debug/Heal 10")] + void DebugHeal() => Heal(10f); + + [ContextMenu("Debug/Kill")] + void DebugKill() => TakeDamage(maxHealth); } diff --git a/Assets/Scripts/Resources/ManaManager.cs b/Assets/Scripts/Resources/ManaManager.cs index 0f7780ba..864c910e 100644 --- a/Assets/Scripts/Resources/ManaManager.cs +++ b/Assets/Scripts/Resources/ManaManager.cs @@ -1,6 +1,6 @@ -using System.Collections; -using System.Collections.Generic; using UnityEngine; +using UnityEngine.UI; +using DG.Tweening; // DOTween public class ManaManager : MonoBehaviour { @@ -13,11 +13,15 @@ public class ManaManager : MonoBehaviour public float regenPerSecond = 8f; public float regenDelayAfterSpend = 1.0f; + [Header("UI")] + public Image manaFillImage; // or assign an Image with fillAmount + float regenResumeTime = 0f; void Awake() { mana = Mathf.Clamp(mana, 0, maxMana); + InitUI(); } void Update() @@ -26,7 +30,7 @@ public class ManaManager : MonoBehaviour if (Time.time < regenResumeTime) return; if (mana >= maxMana) return; - mana = Mathf.Min(maxMana, mana + regenPerSecond * Time.deltaTime); + SetMana(Mathf.Min(maxMana, mana + regenPerSecond * Time.deltaTime)); } public bool Has(float amount) => mana >= amount; @@ -36,7 +40,7 @@ public class ManaManager : MonoBehaviour if (amount <= 0f) return true; if (mana < amount) return false; - mana -= amount; + SetMana(mana - amount); regenResumeTime = Time.time + Mathf.Max(0f, regenDelayAfterSpend); return true; } @@ -44,7 +48,7 @@ public class ManaManager : MonoBehaviour public void Refill(float amount) { if (amount <= 0f) return; - mana = Mathf.Min(maxMana, mana + amount); + SetMana(Mathf.Min(maxMana, mana + amount)); } public void SetMax(float newMax, bool keepRatio = true) @@ -53,5 +57,36 @@ public class ManaManager : MonoBehaviour float ratio = maxMana > 0 ? mana / maxMana : 1f; maxMana = newMax; mana = keepRatio ? Mathf.Clamp01(ratio) * maxMana : Mathf.Min(mana, maxMana); + InitUI(); } + + void SetMana(float newValue) + { + mana = newValue; + UpdateUI(); + } + + void InitUI() + { + if (manaFillImage) + manaFillImage.fillAmount = mana / maxMana; + } + + void UpdateUI() + { + if (manaFillImage) + { + manaFillImage.DOFillAmount(mana / maxMana, 0.25f).SetEase(Ease.OutCubic); + } + } + + // ===== Debug Menu ===== + [ContextMenu("Debug/Spend 10 Mana")] + void DebugSpend() => Spend(10f); + + [ContextMenu("Debug/Refill 10 Mana")] + void DebugRefill() => Refill(10f); + + [ContextMenu("Debug/Empty Mana")] + void DebugEmpty() => Spend(maxMana); } diff --git a/Assets/UI.meta b/Assets/UI.meta new file mode 100644 index 00000000..b1ade2df --- /dev/null +++ b/Assets/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1d3ecfb586a38664ab39f7459679430a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/UI/2x2_Texture.png b/Assets/UI/2x2_Texture.png new file mode 100644 index 0000000000000000000000000000000000000000..114f241c7db4d8f7b23accca66c76041e20109b3 GIT binary patch literal 17251 zcmeI3c|276|HqGX?OTgf(j7}Bnbp=zV=QCM7Dh((2fD9^XIbJRak`=ks~J-k)=xpZEDVXC9BUXO+97 zs?vNV002~-o$S28{WS4MLHu|4UWx$RDe|2Bz`gP;@ka(oIW`vnlss5O;;K~vTp?Ew zz~#Z5i9{HW&tyDwsP{9+?rMU9oQ zy2l@DdRES`x1X+kBO_M!z=4SUnx4igdzBu^cj}%vu7{A;_A!0UQ9d^L>G+^x@6Oop**c-^0 z4s5EU`gZ`U;J~IOzr4H)M5GNRZ<7Jm9@f>A$%qGFv*@vQK)?zhuW|KWdw`4rW;0x> zvA`oZfO7U_I00ub0u>D!%7uV}3V`yAjamv!-v(^Dp|2kT>`n$|JM{bF|6Ep}(QO2h zN-o5g7+~!q*DAn+<$Zk-3k@5bwU*5`r%a=ySR<-JljmU~P1T<^mkrRvhrUz_L&e$@z zk5Q;@eF4bmY4IK4iP_j6KUnhkaaU*Oqm|XRYbm#UcZ@KrHdgo!2Yn33e;IuL?8*y+ zNX+_3$LT}Qs&2n?J++|mkm7FtwwG~^UoI+-e$lzBSMBUyLN=P+;W;z-fL+S|0n91A zJ+_CIUSHHaN_)|6{8^UJZU&s)Opw_Y56@apmHptdM1w4>crge7{iWQ>dxi?K5dpiN zH;P8zS`9m9ECM1J&WC~lV1u0jf^@6Ms#XC2>@p&a&e~|dtDI|GA-ACNr?yJvFPqGF z+Zt3?*=pD-(IOV`H!aQEX=@l=e^$q66Y`$5j%kHwKy(664N>KDNzIa{{)wWHUTIhs zsW{!{hQch0ZcD6;|6a2G0R^q(s3F}-r|C2I8NhDF&i2%Ei8pgXd+jB`e4KRpE&0>1 zG3y*I$FH~nV0M0qE^|a5jx6-Fyr*)3SdwKif49R4R!pGQozu%x$*q}xc6FX?>7Mu0#&e?SGb8OQ z6wRlLY+;mzHcn($vil>aEZ71A(-|#_7K*aFJ*$@JC1kmrUwnDS$LhKM7<3HT$yoov z%(z)djcu{SY72vzdx)4NB?qTDpZlHEJhR!Mnd7D3W1O98>NH7 zZ1ay7d!6x&$(m)lB?Vi*YmT$asr(a1?#>U;3K(Rac_q9&>%8_P7DmpWH|E_0q}?wKUl)AR1`n^#LhS)kt}btkJQbA8B0#YWpT<8LV) zS$Smf5p5$RDLdzM&eI%ap8=mbQe5^1?;QmWJ|^BB*^2j$=KAEMt$O3F?ajE>-XrIC&GniG@psRRa~nI#YGBILc|{?{x`C>>(OV+Tsu!QDf4qIGQEAe! zPU$|&ob2ORqRC1V-y*Mp!wf6=j-=qBV?uYuZo|yPf$+UgXTM$gVyX6NQ`ZtSeO+MA z(Zr+VT&G;mT*o)%<^{c(X{XEWOZ`4as@c@8T(WM7BQvhyr?hVG$KFpel``kJS>oOo zAaVjvX&*1O6J6zG_9dlX*$|QL%FTQlTHgI>!4BjwX_);f^Sz@AS*}RMK(1A#VJ`l< zSuhu`gRE`+)04RVnloDkG*RX3&E|y!YyV%9; zwOe0`ms`o{rKeZ8u5hibzg>T#{z0-?swMg%raQGe^k^*crOS+l;#AwMmD(Sy?b(##o|CGH9Cx#*UtV~e6u+F;=Hq6kK|el zirK|GC`^AX=Eds;*ZLC56LwtQ@$0aqylTv2wOpMwI^lxz{MoqGxTh%%$NH>xTz_}8 z2gxKiYBWAF=_sC6x3rp-=AC-ik*UQj5$qa>-M7bOXB{GufJoJ@d2*w?bEWWo@cQRr z&F|Avi&Cq4vs%yenfI~!V%mPYZTj2NbUzcpoohFU&pf-DtdxH{f(mTU3-=&;L^3aQ z>m#Yic;EboXD^--C3vAAq{*{TM?@VkAVoJMvIa#?^y7!{avg08fG=^co9k@iBl zW1ChI^2T~z=<$ZCcTt&hvJo?laYwCPW8Ie@{y!THqpUgm7xm8)EjpkSTBTFP)I&Cz zH^n|8t}|Nb-tT1O7Ix^5_%gFlgX<=zjJry9FUdYw=Bn!YBo&uFCuJ*)jj_a)qjw#O zKNxJAqwAJX%zVv!$=F(#M~^BTxz5>l5xMY){LR3kgLyys!Ig?_Pro9qF??twU&y5U zGOpI|xrIHNo4%~R_jb{()`J$u-u^b)JF{x$^Fzg_qFsF9I^>t-d7H6?_~6i1r4G%X zmPN0Y%fnyVTWrL>?~&W-4haBp2rZaaKFJGZ)o*2rjP^t^luPhYEcG$-+8 zq8dl_am#tt_SNTm-+!=gMJCo8wwCTHCYGGMioaAw&%D`Czru?2JLw(i6Un@<`N;*! z!y!&npZ2!052k={&SA6%%4 zYuUPgTi$c|yFYK$Vd@|^+otrVIHY=~d|vCn_Oi!qLeqoSPs6@Aw*IVs%oOhzx^jSY zlhx9*^KJsOzj1%sk+dD*h>vZXT2B;j>!voeZ&v5Ny{sX8-fTa*uX{z=iiUOlmxTR= ztzENxFZrgN!EI!}7QV)hB;56=Ej?D6Qc$uku%s`n{K7WIV2^gXMZ=SK<)MGh8GUd+ z9c%fdd?1WFczy7F`#mz`P*qB5ZXsKr-9uP)$TLmL>`E-~W!W>RT zqtP%6ECOw|+yrB048x$%W=IqkiAKRuXdD`a!=PYaH$8$97~%Oe2F}aQ;p=eVH%q+$ zp^%3|B1Iw*LS%yA@|j397K=rqFh~pr4l3Y+P>zri0_Ox6~i_3wD z^HTh|TZEQ+dg6g5wy)>K=1mO55qxC_QbdMOct|t?h5Vk0MxF5Rw(x_-4vj`d(u3%1 zI!7n~edzD{K%{PN6V~qz$7X-mDG=Ik1<&9sk?%SMq);9m=|vZCxA3WS`>o)S=zs6v zd4D~Dd_Ubp_Ycor$YM-R&Nqi5?)jmO9>V&8P24kX8!LtJ8N!3Ga6~?xBINQ(Ty79y zyvin@pTNf_aaF+#eOVkDS0q@9M^3d&&i7+HFQAJrK1;p7uD*%oXkxVyd&Vwe9EB=gmk3mG zY13(VCvZGJ#Qx(kL;-ZpKV2H*sm4@4P9oqkgdz%`Zo>p?;@@1g z<5|D8O-+wSir4WV*0&Qe-umtQ{8h1kpHKY6(uN~)gSdP*E{#qw!6U!dJUKqZ1^!~Q zYWxQqg22ns7UpbEG)H62&EXgX8kz>8gX9q}jySLqK`NB73IIKSYn!Skiz_N<%b4B* zg9113UnsbJwL-h6TK)dn3hkb1opkzeSV98k>u6J&AujO>J`U9zyxE`=z*C#rG*!Kd z6+#ap+p)lvLm<8$z(K|=Q`^7m^ZS7h(*D&qULueig0Tu3Zv}5Rz&jn}#I4S^#WisO z{*Qyn6Z#(~hNhDa0;M4_mg16#2r7``g3^!}OL0j=1QkeeL1{>grMM&_f(oR#pfn`L zQd|-dK?PD=P#O|rDK3eKpaLl_C=H3R6qiIqP=OQ|l!nAuic2CQs6dJfN<(5S#U&9D zR3OC#r6Dnv;*y96Dv;uW(vTQSaY;l36-aSGX-JHvxFjNi3Z%H8G$h7SToMsM1yWp4 z8WLkEE{TYs0x2#i4T-T7mqbKRffN^%hQwHkOClnuK#B`WLt-q&B@q!+AjJixAu*QX zl86W@km7>UkQhsGNkjw{NO3`FNQ|YpBqD+eq`06oB*y=UOKI}uK{^L~V^9RX8fatt z>=XD}A&lzeE7XW-51@}DwumuGGuQvezE(rj%xQ8}gcL22uob7B#Auax2 nMn|n=Wo2i9A8-RZMn`1<136h4BUtJX_!V%rceg9B-L&&RNw~+@ literal 0 HcmV?d00001 diff --git a/Assets/UI/2x2_Texture.png.meta b/Assets/UI/2x2_Texture.png.meta new file mode 100644 index 00000000..4a552434 --- /dev/null +++ b/Assets/UI/2x2_Texture.png.meta @@ -0,0 +1,153 @@ +fileFormatVersion: 2 +guid: d0f7dbe30dfbcf74498876fedf52ea7a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: