diff --git a/Assets/0.SCENE/MainGame.unity b/Assets/0.SCENE/MainGame.unity
index d337c60e..04fe2d44 100644
--- a/Assets/0.SCENE/MainGame.unity
+++ b/Assets/0.SCENE/MainGame.unity
@@ -2235,6 +2235,140 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4708095961488610, guid: 01d14f7c3a49b4f4e86caee63ef815b1, type: 3}
m_PrefabInstance: {fileID: 30507936}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &30997075
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 30997076}
+ - component: {fileID: 30997078}
+ - component: {fileID: 30997077}
+ m_Layer: 5
+ m_Name: MaxHP
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &30997076
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 30997075}
+ 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: 1296865714}
+ 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: 63.4, y: 10}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &30997077
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 30997075}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: 'Max HP:'
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 9.1
+ m_fontSizeBase: 9.1
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &30997078
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 30997075}
+ m_CullTransparentMesh: 1
--- !u!1001 &31138422
PrefabInstance:
m_ObjectHideFlags: 0
@@ -30797,6 +30931,140 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4692013390589372, guid: 034cc56664290054395041c47ae8cd5e, type: 3}
m_PrefabInstance: {fileID: 310239259}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &310564598
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 310564599}
+ - component: {fileID: 310564601}
+ - component: {fileID: 310564600}
+ m_Layer: 5
+ m_Name: Damage
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &310564599
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 310564598}
+ 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: 1296865714}
+ 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: 63.4, y: -16}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &310564600
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 310564598}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: 'Damage:'
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 9.1
+ m_fontSizeBase: 9.1
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &310564601
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 310564598}
+ m_CullTransparentMesh: 1
--- !u!1001 &310805962
PrefabInstance:
m_ObjectHideFlags: 0
@@ -46206,6 +46474,7 @@ MonoBehaviour:
cardPool:
- {fileID: 11400000, guid: 9e2572fa700a4844bbe83ace499f77b0, type: 2}
- {fileID: 11400000, guid: 243e14173b68f3d4c84cc57b36b45497, type: 2}
+ applyButton: {fileID: 1142706460}
--- !u!4 &449852328
Transform:
m_ObjectHideFlags: 0
@@ -53769,6 +54038,140 @@ Transform:
m_CorrespondingSourceObject: {fileID: 400000, guid: 7d54273c46c392343a5bfe162e799a5c, type: 3}
m_PrefabInstance: {fileID: 515422656}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &516038583
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 516038584}
+ - component: {fileID: 516038586}
+ - component: {fileID: 516038585}
+ m_Layer: 5
+ m_Name: Strength
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &516038584
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 516038583}
+ 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: 1296865714}
+ 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: 63.4, y: -3.3}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &516038585
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 516038583}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: 'Strength:'
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 9.1
+ m_fontSizeBase: 9.1
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &516038586
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 516038583}
+ m_CullTransparentMesh: 1
--- !u!1001 &516087309
PrefabInstance:
m_ObjectHideFlags: 0
@@ -66324,157 +66727,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4777934517046012, guid: 91e9da64c88b4594581c8fdf8ff08ffe, type: 3}
m_PrefabInstance: {fileID: 636418817}
m_PrefabAsset: {fileID: 0}
---- !u!1 &636826305
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 636826311}
- - component: {fileID: 636826310}
- - component: {fileID: 636826309}
- - component: {fileID: 636826308}
- - component: {fileID: 636826307}
- - component: {fileID: 636826306}
- m_Layer: 8
- m_Name: "\uCE7C (5)"
- m_TagString: Item
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!65 &636826306
-BoxCollider:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 636826305}
- 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_Size: {x: 0.007935895, y: 0.01989254, z: 0.005629562}
- m_Center: {x: 0.00004746858, y: 0.0058954563, z: -0.000009746058}
---- !u!54 &636826307
-Rigidbody:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 636826305}
- serializedVersion: 4
- m_Mass: 1
- m_Drag: 0
- m_AngularDrag: 0.05
- m_CenterOfMass: {x: 0, y: 0, z: 0}
- m_InertiaTensor: {x: 1, y: 1, z: 1}
- m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
- m_IncludeLayers:
- serializedVersion: 2
- m_Bits: 0
- m_ExcludeLayers:
- serializedVersion: 2
- m_Bits: 0
- m_ImplicitCom: 1
- m_ImplicitTensor: 1
- m_UseGravity: 1
- m_IsKinematic: 0
- m_Interpolate: 0
- m_Constraints: 0
- m_CollisionDetection: 0
---- !u!114 &636826308
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 636826305}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 4b5e436eeda17b141b83d4835e599ed7, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- config: {fileID: 11400000, guid: be0b149d7d696a943acae1ab1133c942, type: 2}
- lv1Mult: 1
- lv2Mult: 1.5
- lv3Mult: 2.5
- strengthBonusFactor: 0.02
---- !u!23 &636826309
-MeshRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 636826305}
- 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_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 2100000, guid: 73f953a4a2baeb4499c95dd4dc1c5859, 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 &636826310
-MeshFilter:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 636826305}
- m_Mesh: {fileID: 1588110511326799053, guid: 30b8348e96a85654c835d47dedb02f53, type: 3}
---- !u!4 &636826311
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 636826305}
- serializedVersion: 2
- m_LocalRotation: {x: 0.5433104, y: -0.066823, z: 0.82765627, w: 0.12382896}
- m_LocalPosition: {x: 22.251, y: 9.2854, z: 13.74}
- m_LocalScale: {x: 136.51878, y: 138.80682, z: 142.1776}
- m_ConstrainProportionsScale: 0
- m_Children: []
- m_Father: {fileID: 0}
- m_LocalEulerAnglesHint: {x: 14.192, y: 65.587, z: 172.153}
--- !u!1001 &637121952
PrefabInstance:
m_ObjectHideFlags: 0
@@ -116537,6 +116789,139 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4165311596937226, guid: 4c1c35c334608e3429dbc1730df94c67, type: 3}
m_PrefabInstance: {fileID: 1142333068}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &1142706458
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1142706459}
+ - component: {fileID: 1142706462}
+ - component: {fileID: 1142706461}
+ - component: {fileID: 1142706460}
+ m_Layer: 5
+ m_Name: Apply Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1142706459
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1142706458}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1.654, y: 1.654, z: 1.654}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1839440759}
+ m_Father: {fileID: 510035933647342717}
+ 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: 352, y: -315}
+ m_SizeDelta: {x: 160, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1142706460
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1142706458}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1142706461}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 0}
+ m_TargetAssemblyTypeName:
+ m_MethodName:
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName:
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &1142706461
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1142706458}
+ 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: 0.15403083, g: 0.990566, 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: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1142706462
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1142706458}
+ m_CullTransparentMesh: 1
--- !u!1001 &1143253543
PrefabInstance:
m_ObjectHideFlags: 0
@@ -127485,6 +127870,61 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4460867311377408, guid: d8923b49e25aa154a8df2666dce5f3cd, type: 3}
m_PrefabInstance: {fileID: 1241034030}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &1241367432
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1241367433}
+ - component: {fileID: 1241367434}
+ m_Layer: 5
+ m_Name: Player Stats UI
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &1241367433
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1241367432}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 5.02472, y: 5.02472, z: 5.02472}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1296865714}
+ m_Father: {fileID: 1800120326328798950}
+ 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: -717, y: 125}
+ m_SizeDelta: {x: 100, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1241367434
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1241367432}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 18c9580976646ab42a48af83ab430afb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ playerStats: {fileID: 1432447530}
+ statWindowPanel: {fileID: 1241367432}
+ maxHealthText: {fileID: 30997077}
+ strengthText: {fileID: 516038585}
+ damageText: {fileID: 310564600}
+ speedText: {fileID: 1904720884}
--- !u!1001 &1241488882
PrefabInstance:
m_ObjectHideFlags: 0
@@ -128427,6 +128867,103 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4438819925971272, guid: f47bfee1d8e05174e9d4dc0ebffa08e0, type: 3}
m_PrefabInstance: {fileID: 1248074135}
m_PrefabAsset: {fileID: 0}
+--- !u!1001 &1248363699
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 2040957530791599685, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 2040957530791599685, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2040957530791599685, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2191869281094090394, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: maxHP
+ value: 100
+ objectReference: {fileID: 0}
+ - target: {fileID: 3587750552762439828, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_Name
+ value: Monster (1)
+ objectReference: {fileID: 0}
+ - target: {fileID: 5494800343343911850, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 44.58
+ objectReference: {fileID: 0}
+ - target: {fileID: 5494800343343911850, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 6.14
+ objectReference: {fileID: 0}
+ - target: {fileID: 5494800343343911850, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 34.06
+ objectReference: {fileID: 0}
+ - target: {fileID: 5494800343343911850, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 5494800343343911850, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5494800343343911850, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5494800343343911850, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5494800343343911850, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5494800343343911850, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5494800343343911850, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7307672912510681016, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_Sprite
+ value:
+ objectReference: {fileID: 1043367860, guid: 95ab59b2554677f42ae266b854501dea, type: 3}
+ - target: {fileID: 7852562287375518264, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 2.2405
+ objectReference: {fileID: 0}
+ - target: {fileID: 7852562287375518264, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: -0.0549
+ objectReference: {fileID: 0}
+ - target: {fileID: 8097316185771272198, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 2.2405
+ objectReference: {fileID: 0}
+ - target: {fileID: 8097316185771272198, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: -0.0549
+ objectReference: {fileID: 0}
+ - target: {fileID: 8373334604175617921, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
+ propertyPath: m_Sprite
+ value:
+ objectReference: {fileID: 1043367860, guid: 95ab59b2554677f42ae266b854501dea, type: 3}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
--- !u!1001 &1249514920
PrefabInstance:
m_ObjectHideFlags: 0
@@ -133148,6 +133685,85 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4449890379361532, guid: 4f283ac0ef0b13b4dafc3fe2dbbcedea, type: 3}
m_PrefabInstance: {fileID: 1295165370}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &1296865713
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1296865714}
+ - component: {fileID: 1296865716}
+ - component: {fileID: 1296865715}
+ m_Layer: 5
+ m_Name: Image
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1296865714
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1296865713}
+ 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: 30997076}
+ - {fileID: 516038584}
+ - {fileID: 310564599}
+ - {fileID: 1904720883}
+ m_Father: {fileID: 1241367433}
+ 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: 100, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1296865715
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1296865713}
+ 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: 285118559, guid: 75bfb8def6297694bb4d4ab6c9ffcef0, 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
+--- !u!222 &1296865716
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1296865713}
+ m_CullTransparentMesh: 1
--- !u!1001 &1297364955
PrefabInstance:
m_ObjectHideFlags: 0
@@ -146778,6 +147394,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
stats: {fileID: 1432447530}
animator: {fileID: 1432447523}
+ isInvincible: 0
--- !u!114 &1432447527
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -146830,7 +147447,7 @@ MonoBehaviour:
aim: {fileID: 1432447528}
interaction: {fileID: 1432447532}
attack: {fileID: 1432447527}
- statsUI: {fileID: 0}
+ statsUI: {fileID: 1241367434}
--- !u!114 &1432447530
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -146851,6 +147468,7 @@ MonoBehaviour:
bonusMoveSpeed: 0
bonusStrength: 0
bonusAttackDamage: 0
+ weaponDamage: 0
weightToSpeedPenalty: 0.1
runSpeedMultiplier: 1.5
finalMaxHealth: 0
@@ -146873,6 +147491,9 @@ MonoBehaviour:
health: {fileID: 1432447526}
pAnim: {fileID: 1432447533}
attackScript: {fileID: 1432447527}
+ dashDistance: 3
+ dashDuration: 0.08
+ dashCooldown: 1.5
minSpeedMultiplier: 0.3
--- !u!114 &1432447532
MonoBehaviour:
@@ -155557,6 +156178,91 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4946034908522688, guid: 0b4ec2079abd9a64390cf77971445fc5, type: 3}
m_PrefabInstance: {fileID: 1531559788}
m_PrefabAsset: {fileID: 0}
+--- !u!1001 &1532158138
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 450992007138140667, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_LocalScale.x
+ value: 218.43205
+ objectReference: {fileID: 0}
+ - target: {fileID: 450992007138140667, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_LocalScale.y
+ value: 222.09297
+ objectReference: {fileID: 0}
+ - target: {fileID: 450992007138140667, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_LocalScale.z
+ value: 227.48624
+ objectReference: {fileID: 0}
+ - target: {fileID: 450992007138140667, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 24.215
+ objectReference: {fileID: 0}
+ - target: {fileID: 450992007138140667, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 10.136
+ objectReference: {fileID: 0}
+ - target: {fileID: 450992007138140667, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 13.717
+ objectReference: {fileID: 0}
+ - target: {fileID: 450992007138140667, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.12382896
+ objectReference: {fileID: 0}
+ - target: {fileID: 450992007138140667, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.5433104
+ objectReference: {fileID: 0}
+ - target: {fileID: 450992007138140667, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.066823
+ objectReference: {fileID: 0}
+ - target: {fileID: 450992007138140667, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.82765627
+ objectReference: {fileID: 0}
+ - target: {fileID: 450992007138140667, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 14.192
+ objectReference: {fileID: 0}
+ - target: {fileID: 450992007138140667, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 65.587
+ objectReference: {fileID: 0}
+ - target: {fileID: 450992007138140667, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 172.153
+ objectReference: {fileID: 0}
+ - target: {fileID: 4085536598674672635, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_Size.x
+ value: 0.003
+ objectReference: {fileID: 0}
+ - target: {fileID: 4085536598674672635, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_Size.y
+ value: 0.008
+ objectReference: {fileID: 0}
+ - target: {fileID: 4906676340306482370, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: config
+ value:
+ objectReference: {fileID: 11400000, guid: 602c0bb77ce70104ab6768b08772132f, type: 2}
+ - target: {fileID: 6875888761843048781, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_Enabled
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 8071134912250732547, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
+ propertyPath: m_Name
+ value: "\uCE7C (5)"
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
--- !u!1001 &1532898197
PrefabInstance:
m_ObjectHideFlags: 0
@@ -185973,6 +186679,85 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4338630269152726, guid: ad15607b5cff0b945ae2b555c35aa8fc, type: 3}
m_PrefabInstance: {fileID: 1838591746}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &1839440758
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1839440759}
+ - component: {fileID: 1839440761}
+ - component: {fileID: 1839440760}
+ m_Layer: 5
+ m_Name: Text (Legacy)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1839440759
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1839440758}
+ 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: 1142706459}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1839440760
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1839440758}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 21
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 0
+ m_MaxSize: 300
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Apply
+--- !u!222 &1839440761
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1839440758}
+ m_CullTransparentMesh: 1
--- !u!4 &1840438704 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4501200234821270, guid: 33d643b9c13b8cf47bb2d38599ac5c84, type: 3}
@@ -191551,6 +192336,140 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4917135111635402, guid: 4fb7e29eb03a19e4099b10ed3f307852, type: 3}
m_PrefabInstance: {fileID: 1903991475}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &1904720882
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1904720883}
+ - component: {fileID: 1904720885}
+ - component: {fileID: 1904720884}
+ m_Layer: 5
+ m_Name: Speed
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1904720883
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1904720882}
+ 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: 1296865714}
+ 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: 63.4, y: -29.3}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1904720884
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1904720882}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: 'Speed:'
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 9.1
+ m_fontSizeBase: 9.1
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1904720885
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1904720882}
+ m_CullTransparentMesh: 1
--- !u!1001 &1904976942
PrefabInstance:
m_ObjectHideFlags: 0
@@ -215968,6 +216887,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 966059175}
+ - {fileID: 1142706459}
m_Father: {fileID: 1800120326328798950}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
@@ -216192,6 +217112,7 @@ RectTransform:
- {fileID: 757505799485494552}
- {fileID: 8997534549618499257}
- {fileID: 510035933647342717}
+ - {fileID: 1241367433}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -217367,11 +218288,12 @@ SceneRoots:
- {fileID: 398512784}
- {fileID: 1390519481}
- {fileID: 7969472841528762147}
- - {fileID: 636826311}
+ - {fileID: 1532158138}
- {fileID: 1992891316}
- {fileID: 2112919309}
- {fileID: 2119519052}
- {fileID: 449852328}
- {fileID: 8307157894164531551}
+ - {fileID: 1248363699}
- {fileID: 7449230931284885269}
- {fileID: 321682814584122314}
diff --git a/Assets/4.PlayerAnimation/OutAnime/AttackAnime.fbx.meta b/Assets/4.PlayerAnimation/OutAnime/AttackAnime.fbx.meta
index cc81eccc..2c4ee982 100644
--- a/Assets/4.PlayerAnimation/OutAnime/AttackAnime.fbx.meta
+++ b/Assets/4.PlayerAnimation/OutAnime/AttackAnime.fbx.meta
@@ -107,13 +107,6 @@ ModelImporter:
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- - time: 0
- functionName: StartWeaponCollision
- data:
- objectReferenceParameter: {instanceID: 0}
- floatParameter: 0
- intParameter: 0
- messageOptions: 0
- time: 0.44848183
functionName: StartWeaponCollision
data:
diff --git a/Assets/5.TestScript/Attack.cs b/Assets/5.TestScript/Attack.cs
index 644ed87c..42f92b8a 100644
--- a/Assets/5.TestScript/Attack.cs
+++ b/Assets/5.TestScript/Attack.cs
@@ -39,24 +39,21 @@ public class PlayerAttack : MonoBehaviour
if (Time.time < _lastAttackTime + attackCooldown) return;
_isAttacking = true;
- _comboCount = (_comboCount % 3) + 1;
+ _comboCount = (_comboCount % 3) + 1; // 1 -> 2 -> 3 순환
pAnim.TriggerAttack();
_lastAttackTime = Time.time;
}
- // ⭐ [수정] 휘두를 때 데미지를 실어서 판정을 켭니다.
public void StartWeaponCollision()
{
if (weaponHitBox != null)
{
Debug.Log("[Attack] 낫 공격 판정 ON!");
- // stats에 설정된 공격력을 가져와서 전달하면 더 좋습니다.
weaponHitBox.EnableHitBox(20f);
}
}
- // ⭐ [수정] 휘두르기가 끝나면 확실하게 판정을 끕니다.
public void StopWeaponCollision()
{
if (weaponHitBox != null)
@@ -66,26 +63,25 @@ public class PlayerAttack : MonoBehaviour
}
}
+ // ⭐ [수정 완료] 오직 3타 막타일 때만 카메라 연출을 실행합니다.
public void OnAttackShake()
{
if (CinemachineShake.Instance == null) return;
+ // 3번째 콤보일 때만 묵직하게 흔들어줍니다.
if (_comboCount == 3)
{
- CinemachineShake.Instance.HitSlow(0.2f, 0.05f);
- CinemachineShake.Instance.CameraKick(10f);
- CinemachineShake.Instance.ShakeAttack();
- }
- else
- {
- CinemachineShake.Instance.HitSlow(0.1f, 0.2f);
- CinemachineShake.Instance.ShakeAttack();
+ Debug.Log("[Shake] 3타 막타 카메라 연출 실행!");
+ CinemachineShake.Instance.HitSlow(0.2f, 0.05f); // 히트 슬로우
+ CinemachineShake.Instance.CameraKick(10f); // 카메라 킥
+ CinemachineShake.Instance.ShakeAttack(); // 진동
}
+ // 🚫 else 구문을 삭제하여 1, 2타 시에는 아무것도 하지 않습니다.
}
public void OnAttackEnd()
{
- StopWeaponCollision(); // 🚫 안전장치: 공격이 끝나면 무조건 판정을 끕니다.
+ StopWeaponCollision();
if (_comboCount == 3) { StartCoroutine(PostComboRecovery()); }
else { _isAttacking = false; }
}
@@ -129,7 +125,6 @@ public class PlayerAttack : MonoBehaviour
if (targetDirection != Vector3.zero) transform.rotation = Quaternion.LookRotation(targetDirection);
- // 🛠️ 무기 독립 로직 (자식에서 떼어내기)
GameObject weaponObj = interaction.CurrentWeapon.gameObject;
weaponObj.transform.SetParent(null);
@@ -162,9 +157,10 @@ public class PlayerAttack : MonoBehaviour
pAnim.SetCharging(true);
if (CinemachineShake.Instance != null) CinemachineShake.Instance.SetZoom(true);
}
+
private void OnDrawGizmos()
{
- Gizmos.color = Color.red; // 공격 범위는 빨간색으로 표시
+ Gizmos.color = Color.red;
if (TryGetComponent(out var box))
{
Gizmos.matrix = transform.localToWorldMatrix;
diff --git a/Assets/5.TestScript/Health.cs b/Assets/5.TestScript/Health.cs
index 10e3280a..d73d0734 100644
--- a/Assets/5.TestScript/Health.cs
+++ b/Assets/5.TestScript/Health.cs
@@ -1,5 +1,6 @@
using UnityEngine;
using System;
+using System.Collections; // ⭐ IEnumerator 사용을 위해 추가
public class PlayerHealth : MonoBehaviour, IDamageable
{
@@ -8,44 +9,41 @@ public class PlayerHealth : MonoBehaviour, IDamageable
public bool IsDead { get; private set; }
public bool isHit { get; private set; }
+ public bool isInvincible; // 대시 중 무적 플래그
public event Action OnHit, OnDead;
public event Action OnHealthChanged;
private float _currentHealth;
- private void Start()
+ // ⭐ [수정] Start를 코루틴으로 변경하여 실행 순서 문제를 해결합니다.
+ private IEnumerator Start()
{
+ // 모든 오브젝트가 깨어날 때까지 한 프레임 기다립니다.
+ yield return null;
+
if (stats != null)
{
_currentHealth = stats.MaxHealth;
+ // 이제 UI가 확실히 준비되었으므로 수치를 전달합니다.
OnHealthChanged?.Invoke(_currentHealth, stats.MaxHealth);
+ Debug.Log($"[UI Sync] 초기 체력 설정 완료: {_currentHealth}/{stats.MaxHealth}");
}
if (animator == null) animator = GetComponent();
}
- // ⭐ [최종 수정] 최대 체력 변동 시 호출: 피는 안 채우되, 그릇(MaxHealth)을 넘치는 피는 깎습니다.
public void RefreshHealthUI()
{
if (stats != null)
{
- // 1. [핵심] 현재 체력이 최대 체력을 넘지 못하도록 고정 (Clamp)
- // 최대 체력이 늘어나면 기존 피 유지, 줄어들어서 피가 넘치면 최대치로 깎음
_currentHealth = Mathf.Min(_currentHealth, stats.MaxHealth);
-
- // 2. 즉시 UI에 바뀐 수치를 보냅니다.
- if (OnHealthChanged != null)
- {
- OnHealthChanged.Invoke(_currentHealth, stats.MaxHealth);
- Debug.Log($"[Health Sync] UI 갱신 완료: {_currentHealth} / {stats.MaxHealth}");
- }
+ OnHealthChanged?.Invoke(_currentHealth, stats.MaxHealth);
}
}
- // ... (TakeDamage 등 나머지 기존 코드 유지)
public void TakeDamage(float amount)
{
- if (IsDead) return;
+ if (isInvincible || IsDead) return;
_currentHealth = Mathf.Max(0, _currentHealth - amount);
OnHealthChanged?.Invoke(_currentHealth, stats.MaxHealth);
OnHit?.Invoke();
@@ -58,24 +56,10 @@ public class PlayerHealth : MonoBehaviour, IDamageable
isHit = true;
if (animator != null) animator.Play("HitAnime", 0, 0f);
CancelInvoke(nameof(OnHitEnd));
- Invoke(nameof(OnHitEnd), 0.05f);
+ Invoke(nameof(OnHitEnd), 0.25f);
}
public void OnHitEnd() { isHit = false; }
- private void Die()
- {
- IsDead = true;
- Cursor.visible = true;
- Cursor.lockState = CursorLockMode.None;
- OnDead?.Invoke();
- }
- public void Heal(float amount)
- {
- if (IsDead) return;
- // 현재 체력에 회복량을 더하되, Stats의 MaxHealth를 넘지 못하게 합니다.
- _currentHealth = Mathf.Min(_currentHealth + amount, stats.MaxHealth);
-
- // UI 갱신
- OnHealthChanged?.Invoke(_currentHealth, stats.MaxHealth);
- }
+ private void Die() { IsDead = true; Cursor.visible = true; Cursor.lockState = CursorLockMode.None; OnDead?.Invoke(); }
+ public void Heal(float amount) { if (IsDead) return; _currentHealth = Mathf.Min(_currentHealth + amount, stats.MaxHealth); OnHealthChanged?.Invoke(_currentHealth, stats.MaxHealth); }
}
\ No newline at end of file
diff --git a/Assets/5.TestScript/Player Stat UI.cs b/Assets/5.TestScript/Player Stat UI.cs
index 14d68f2f..051163d0 100644
--- a/Assets/5.TestScript/Player Stat UI.cs
+++ b/Assets/5.TestScript/Player Stat UI.cs
@@ -1,15 +1,15 @@
-using UnityEngine;
-using TMPro; // TextMeshPro ʼ
+using UnityEngine;
+using TMPro;
public class PlayerStatsUI : MonoBehaviour
{
- [Header("--- ---")]
+ [Header("--- 데이터 연결 ---")]
[SerializeField] private Stats playerStats;
- [Header("--- UI Ʈ ---")]
- [SerializeField] private GameObject statWindowPanel; // CŰ θ dz
+ [Header("--- UI 오브젝트 ---")]
+ [SerializeField] private GameObject statWindowPanel;
- [Header("--- ؽƮ UI ---")]
+ [Header("--- 텍스트 UI ---")]
[SerializeField] private TextMeshProUGUI maxHealthText;
[SerializeField] private TextMeshProUGUI strengthText;
[SerializeField] private TextMeshProUGUI damageText;
@@ -17,35 +17,30 @@ public class PlayerStatsUI : MonoBehaviour
private void Start()
{
- // â ݾƵӴϴ.
- if (statWindowPanel != null)
- statWindowPanel.SetActive(false);
+ if (statWindowPanel != null) statWindowPanel.SetActive(false);
}
- // â ų ݴ Լ
public void ToggleWindow()
{
if (statWindowPanel == null) return;
-
bool isActive = !statWindowPanel.activeSelf;
statWindowPanel.SetActive(isActive);
-
- // â ֽ ڸ մϴ.
- if (isActive)
- {
- UpdateStatTexts();
- }
+ if (isActive) UpdateStatTexts();
}
- private void UpdateStatTexts()
+ public void UpdateStatTexts()
{
if (playerStats == null) return;
- // Stats.cs Ƽ ɴϴ.
maxHealthText.text = $"MaxHP: {playerStats.MaxHealth}";
strengthText.text = $"Strength: {playerStats.Strength}";
- damageText.text = $"Damage: {playerStats.BaseAttackDamage}";
- // ǵ Ҽ ڸ ϰ ǥ
- speedText.text = $"Speed: {playerStats.CurrentMoveSpeed:F1}";
+
+ // ⭐ 데미지: 최종합 (+무기보너스)
+ damageText.text = $"Damage: {playerStats.TotalAttackDamage} (+{playerStats.weaponDamage})";
+
+ // ⭐ [수정] 스피드: 현재속도 (-무게페널티) 형태로 표기합니다.
+ // 페널티가 0보다 클 때만 빨간색 느낌으로 괄호 수치를 띄워줍니다.
+ string penaltyText = playerStats.WeightPenalty > 0 ? $" (-{playerStats.WeightPenalty:F1})" : "";
+ speedText.text = $"Speed: {playerStats.CurrentMoveSpeed:F1}{penaltyText}";
}
}
\ No newline at end of file
diff --git a/Assets/5.TestScript/PlayerInput.cs b/Assets/5.TestScript/PlayerInput.cs
index 8b2eaec6..d2697c6a 100644
--- a/Assets/5.TestScript/PlayerInput.cs
+++ b/Assets/5.TestScript/PlayerInput.cs
@@ -1,4 +1,5 @@
using UnityEngine;
+
public class PlayerInput : MonoBehaviour
{
[SerializeField] private PlayerHealth health;
@@ -6,22 +7,26 @@ public class PlayerInput : MonoBehaviour
[SerializeField] private PlayerAim aim;
[SerializeField] private PlayerInteraction interaction;
[SerializeField] private PlayerAttack attack;
- [SerializeField] private PlayerStatsUI statsUI; // ⭐ 추가: UI 매니저 연결
+ [SerializeField] private PlayerStatsUI statsUI;
private void Update()
{
if (health != null && health.IsDead) return;
- // ⭐ [추가] C키를 누르면 상태창 토글
- if (Input.GetKeyDown(KeyCode.C) && statsUI != null)
- {
- statsUI.ToggleWindow();
- }
+ if (Input.GetKeyDown(KeyCode.C) && statsUI != null) statsUI.ToggleWindow();
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
bool sprint = Input.GetKey(KeyCode.LeftShift);
- if (movement != null) movement.SetMoveInput(new Vector3(h, 0, v).normalized, sprint);
+
+ if (movement != null)
+ {
+ movement.SetMoveInput(new Vector3(h, 0, v).normalized, sprint);
+
+ // ⭐ [추가] Space 키를 누르면 대시 실행
+ if (Input.GetKeyDown(KeyCode.Space)) movement.AttemptDash();
+ }
+
if (aim != null) aim.RotateTowardsMouse();
if (Input.GetKeyDown(KeyCode.F) && interaction != null) interaction.TryInteract();
diff --git a/Assets/5.TestScript/PlayerInteraction.cs b/Assets/5.TestScript/PlayerInteraction.cs
index 45b5ae77..1d9ad838 100644
--- a/Assets/5.TestScript/PlayerInteraction.cs
+++ b/Assets/5.TestScript/PlayerInteraction.cs
@@ -14,10 +14,8 @@ public class PlayerInteraction : MonoBehaviour
public void TryInteract()
{
Collider[] hits = Physics.OverlapSphere(transform.position, interactRange, itemLayer);
-
foreach (var hit in hits)
{
- // 1. 무기 상호작용
if (hit.TryGetComponent(out var item))
{
if (playerStats.Strength >= item.Config.RequiredStrength)
@@ -25,28 +23,10 @@ public class PlayerInteraction : MonoBehaviour
EquipWeapon(item);
break;
}
- else
- {
- // ⭐ [핵심 수정] 힘이 부족하면 카메라를 흔듭니다!
- CinemachineShake.Instance?.ShakeNoNo();
- Debug.Log($"힘 부족! 필요: {item.Config.RequiredStrength}, 현재: {playerStats.Strength}");
- continue;
- }
- }
-
- // 2. 포션 상호작용
- if (hit.TryGetComponent(out var potion))
- {
- potion.Use(GetComponent());
- break;
- }
-
- // 3. 제단 상호작용
- if (hit.TryGetComponent(out var altar))
- {
- altar.Use(GetComponent());
- break;
+ else { CinemachineShake.Instance?.ShakeNoNo(); continue; }
}
+ if (hit.TryGetComponent(out var potion)) { potion.Use(GetComponent()); break; }
+ if (hit.TryGetComponent(out var altar)) { altar.Use(GetComponent()); break; }
}
}
@@ -55,8 +35,27 @@ public class PlayerInteraction : MonoBehaviour
if (_currentWeapon != null) _currentWeapon.OnDropped(transform.forward);
_currentWeapon = item;
_currentWeapon.OnPickedUp(handSlot);
- playerStats.UpdateWeaponWeight(item.Config.RequiredStrength);
+
+ if (playerStats != null)
+ {
+ playerStats.weaponDamage = item.Config.BaseDamage;
+ playerStats.UpdateWeaponWeight(item.Config.RequiredStrength);
+ }
+
+ // ⭐ 무기 장착 즉시 UI 갱신
+ FindObjectOfType()?.UpdateStatTexts();
}
- public void ClearCurrentWeapon() => _currentWeapon = null;
+ public void ClearCurrentWeapon()
+ {
+ _currentWeapon = null;
+ if (playerStats != null)
+ {
+ playerStats.weaponDamage = 0;
+ playerStats.ResetWeight();
+
+ // ⭐ 무기 제거 즉시 UI 갱신
+ FindObjectOfType()?.UpdateStatTexts();
+ }
+ }
}
\ No newline at end of file
diff --git a/Assets/5.TestScript/PlayerMovement.cs b/Assets/5.TestScript/PlayerMovement.cs
index a031dbe9..462fd8e4 100644
--- a/Assets/5.TestScript/PlayerMovement.cs
+++ b/Assets/5.TestScript/PlayerMovement.cs
@@ -1,4 +1,5 @@
using UnityEngine;
+using System.Collections;
public class PlayerMovement : MonoBehaviour
{
@@ -8,32 +9,55 @@ public class PlayerMovement : MonoBehaviour
[SerializeField] private PlayerAnimator pAnim;
[SerializeField] private PlayerAttack attackScript;
+ [Header("--- 대시 설정 ---")]
+ // ⭐ 유저님 이미지(image_42ccbd.png) 수치를 기본값으로 적용했습니다.
+ [SerializeField] private float dashDistance = 3f;
+ [SerializeField] private float dashDuration = 0.08f;
+ [SerializeField] private float dashCooldown = 1.5f;
+
[Header("--- 차징 감속 설정 ---")]
[Range(0.1f, 1f)]
[SerializeField] private float minSpeedMultiplier = 0.3f;
private Vector3 _moveDir;
private bool _isSprinting;
+ private bool _isDashing;
+ private float _lastDashTime;
+ // ⭐ PlayerInput에서 호출하는 입력 세팅
public void SetMoveInput(Vector3 dir, bool sprint) { _moveDir = dir; _isSprinting = sprint; }
+ // ⭐ PlayerInput에서 Space를 누를 때 호출하는 대시 시도 함수
+ public void AttemptDash()
+ {
+ if (CanDash()) StartCoroutine(DashRoutine());
+ }
+
+ private bool CanDash()
+ {
+ // 쿨타임 체크 + 대시 중 아님 + 사망 아님
+ bool isCooldownOver = Time.time >= _lastDashTime + dashCooldown;
+ bool isAlive = health != null && !health.IsDead;
+ return isCooldownOver && !_isDashing && isAlive;
+ }
+
private void Update()
{
- // 1. 💀 사망 시 혹은 ⚔️ 공격 중일 때 이동 차단
- if (health != null && health.IsDead)
+ // 1. 💀 사망, ⚡ 대시 중, 🤕 혹은 피격(isHit) 중일 때 이동 차단
+ if (health != null && (health.IsDead || health.isHit || _isDashing))
+ {
+ if (pAnim != null && !health.IsDead) pAnim.UpdateMove(0f);
+ return;
+ }
+
+ // 2. ⚔️ 공격 중(콤보 및 후딜레이)일 때 이동 차단
+ if (attackScript != null && attackScript.IsAttacking)
{
if (pAnim != null) pAnim.UpdateMove(0f);
return;
}
- // ⭐ [추가] 공격 중(콤보 및 후딜레이 포함)에는 이동 입력 무시
- if (attackScript != null && attackScript.IsAttacking)
- {
- if (pAnim != null) pAnim.UpdateMove(0f); // 제자리 대기 애니메이션 유도
- return;
- }
-
- // 2. 이동 속도 계산 및 차징 감속 적용
+ // 3. 이동 속도 계산 및 차징 감속 적용
float speed = _isSprinting ? stats.CurrentRunSpeed : stats.CurrentMoveSpeed;
if (attackScript != null && attackScript.IsCharging)
@@ -42,10 +66,10 @@ public class PlayerMovement : MonoBehaviour
speed *= speedReduction;
}
- // 3. 실제 이동 처리
+ // 4. 실제 이동 처리
transform.Translate(_moveDir * speed * Time.deltaTime, Space.World);
- // 4. 애니메이션 연동
+ // 5. 애니메이션 연동
if (pAnim != null)
{
float animVal = _moveDir.magnitude > 0.1f ? (_isSprinting ? 1.0f : 0.5f) : 0f;
@@ -53,4 +77,30 @@ public class PlayerMovement : MonoBehaviour
pAnim.UpdateMove(animVal);
}
}
+
+ // ⭐ [핵심] 방향성 대시 및 무적 처리 로직
+ private IEnumerator DashRoutine()
+ {
+ _isDashing = true;
+ _lastDashTime = Time.time;
+
+ // 입력 방향이 있으면 그쪽으로, 없으면 캐릭터의 정면이 아닌 후방(회피)으로 대시
+ Vector3 dashDir = _moveDir.sqrMagnitude > 0.001f ? _moveDir : -transform.forward;
+
+ // 🛡️ [무적] 대시 시작 시 무적 상태 활성화
+ if (health != null) health.isInvincible = true;
+
+ float startTime = Time.time;
+ while (Time.time < startTime + dashDuration)
+ {
+ // 속도 = 거리 / 시간
+ float speed = dashDistance / dashDuration;
+ transform.Translate(dashDir * speed * Time.deltaTime, Space.World);
+ yield return null;
+ }
+
+ // 🛡️ [무적] 대시 종료 시 무적 상태 해제
+ if (health != null) health.isInvincible = false;
+ _isDashing = false;
+ }
}
\ No newline at end of file
diff --git a/Assets/5.TestScript/Stats.cs b/Assets/5.TestScript/Stats.cs
index 04a7ee9c..1eb95008 100644
--- a/Assets/5.TestScript/Stats.cs
+++ b/Assets/5.TestScript/Stats.cs
@@ -16,39 +16,37 @@ public class Stats : MonoBehaviour
public float bonusStrength;
public float bonusAttackDamage;
+ [Header("--- 장착 장비 ---")]
+ public float weaponDamage; // ⭐ 추가: 무기의 순수 공격력
+
[Header("--- 밸런스 설정 ---")]
[SerializeField] private float weightToSpeedPenalty = 0.1f;
[SerializeField] private float runSpeedMultiplier = 1.5f;
private float _weightPenalty = 0f;
+ // ⭐ [추가] 현재 적용 중인 무게 페널티 수치를 외부(UI)에 공개합니다.
+ public float WeightPenalty => _weightPenalty;
+
/* =========================
* 실제 게임 로직용 프로퍼티
* ========================= */
public float MaxHealth => baseMaxHealth + bonusMaxHealth;
public float Strength => baseStrength + bonusStrength;
public float BaseAttackDamage => baseAttackDamage + bonusAttackDamage;
+ public float TotalAttackDamage => BaseAttackDamage + weaponDamage;
- // ⭐ [에러 해결] PlayerMovement.cs에서 사용하는 속도 프로퍼티
public float CurrentMoveSpeed => Mathf.Max(1f, baseMoveSpeed + bonusMoveSpeed - _weightPenalty);
public float CurrentRunSpeed => CurrentMoveSpeed * runSpeedMultiplier;
private void Update()
{
- // 인스펙터 실시간 표시용 (Read Only)
finalMaxHealth = MaxHealth;
finalMoveSpeed = CurrentMoveSpeed;
finalStrength = Strength;
- finalAttackDamage = BaseAttackDamage;
- }
-
- // ⭐ 레벨업 시 기초 능력치 영구 상승
- public void AddBaseLevelUpStats(float hpAdd, float strAdd)
- {
- baseMaxHealth += hpAdd;
- baseStrength += strAdd;
- Debug.Log($"[Stats] 기초 스탯 상승 완료! 최대 체력: {MaxHealth}");
+ finalAttackDamage = TotalAttackDamage;
}
+ public void AddBaseLevelUpStats(float hpAdd, float strAdd) { baseMaxHealth += hpAdd; baseStrength += strAdd; }
public void AddMaxHealth(float value) => bonusMaxHealth += value;
public void AddMoveSpeed(float value) => bonusMoveSpeed += value;
public void AddStrength(float value) => bonusStrength += value;
diff --git a/Assets/5.TestScript/WePonHitBox.cs b/Assets/5.TestScript/WePonHitBox.cs
index ba5162bc..07665e1a 100644
--- a/Assets/5.TestScript/WePonHitBox.cs
+++ b/Assets/5.TestScript/WePonHitBox.cs
@@ -4,42 +4,37 @@ using System.Collections.Generic;
public class WeaponHitBox : MonoBehaviour
{
private float _damage;
- private bool _isActive = false; // ⭐ 기본은 꺼져 있어야 합니다!
+ private bool _isActive = false;
private List _hitTargets = new List();
public void EnableHitBox(float damage)
{
_damage = damage;
- _isActive = true; // 이제부터 공격 가능
+ _isActive = true;
_hitTargets.Clear();
- gameObject.SetActive(true); // 오브젝트도 함께 켜줍니다.
+ gameObject.SetActive(true);
}
public void DisableHitBox()
{
- _isActive = false; // 공격 불가능
- gameObject.SetActive(false); // 오브젝트도 꺼줍니다.
+ _isActive = false;
+ gameObject.SetActive(false);
}
private void OnTriggerEnter(Collider other)
{
- // 1. 공격 활성화 상태가 아니면 무시 (근접 킬 방지)
- if (!_isActive) return;
+ if (!_isActive || other.CompareTag("Player")) return;
- // 2. ⭐ [자해 방지] 부딪힌 대상이 나(Player)라면 무시합니다!
- if (other.CompareTag("Player")) return;
+ // ⭐ [핵심] 몬스터의 감지 영역(Trigger)은 무시하고 '진짜 몸통'만 타격!
+ if (other.isTrigger) return;
- // 3. 적(IDamageable)에게 데미지 입히기
if (other.TryGetComponent(out var target))
{
if (!_hitTargets.Contains(target))
{
target.TakeDamage(_damage);
_hitTargets.Add(target);
- Debug.Log($"[Hit] {other.name}에게 {_damage} 데미지!");
-
- // 타격 시 효과 (카메라 쉐이크 등 호출)
- SendMessageUpwards("OnAttackShake", SendMessageOptions.DontRequireReceiver);
+ Debug.Log($"[Hit] {other.name}의 몸통을 정확히 타격!");
}
}
}
diff --git a/Assets/7.Other Code/Card_Scripts/CardUI.cs b/Assets/7.Other Code/Card_Scripts/CardUI.cs
index 5154841b..0f7ac132 100644
--- a/Assets/7.Other Code/Card_Scripts/CardUI.cs
+++ b/Assets/7.Other Code/Card_Scripts/CardUI.cs
@@ -1,11 +1,12 @@
using UnityEngine;
using TMPro;
-using UnityEngine.UI;
+using UnityEngine.UI; //
public class CardUI : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI effectText;
[SerializeField] private Image iconImage;
+ [SerializeField] private Outline selectionOutline; // ⭐ 인스펙터에서 테두리 컴포넌트 연결
private CardData cardData;
private LevelUpUIManager uiManager;
@@ -18,56 +19,41 @@ public class CardUI : MonoBehaviour
{
cardData = data;
uiManager = manager;
+ if (selectionOutline != null) selectionOutline.enabled = false; // 처음엔 테두리 끔
+ // (랜덤 스탯 카드 데이터 처리 로직 - 기존 코드 유지)
RandomStatCardData randomData = cardData as RandomStatCardData;
if (randomData != null)
{
isRandomCard = true;
-
- // 스탯 2개 랜덤 선택 (중복 방지)
s1 = randomData.possibleStats[Random.Range(0, randomData.possibleStats.Length)];
- do
- {
- s2 = randomData.possibleStats[Random.Range(0, randomData.possibleStats.Length)];
- }
- while (s1 == s2);
-
- // ✅ v1 = 무조건 양수
- int positiveMin = Mathf.Max(1, randomData.minValue);
- int positiveMax = Mathf.Max(1, randomData.maxValue);
- v1 = Random.Range(positiveMin, positiveMax + 1);
-
- // ✅ v2 = 무조건 음수
- int negativeMin = Mathf.Min(-1, randomData.minValue);
- int negativeMax = -1;
- v2 = Random.Range(negativeMin, negativeMax + 1);
-
+ do { s2 = randomData.possibleStats[Random.Range(0, randomData.possibleStats.Length)]; } while (s1 == s2);
+ v1 = Random.Range(Mathf.Max(1, randomData.minValue), Mathf.Max(1, randomData.maxValue) + 1);
+ v2 = Random.Range(Mathf.Min(-1, randomData.minValue), -1 + 1);
effectText.text = $"{s1} +{v1}\n{s2} {v2}";
}
- else
- {
- effectText.text = cardData.GetText();
- }
+ else { effectText.text = cardData.GetText(); }
}
- public void OnClick()
+ // 카드 클릭 시 매니저에게 알림
+ public void OnClick() { uiManager.OnCardClick(this); }
+
+ // 선택 시 하이라이트 연출
+ public void SetSelected(bool isSelected)
+ {
+ if (selectionOutline != null) selectionOutline.enabled = isSelected;
+ transform.localScale = isSelected ? Vector3.one * 1.05f : Vector3.one;
+ }
+
+ // APPLY 버튼 누를 때 최종 실행될 효과
+ public void ApplyCurrentEffect()
{
if (isRandomCard)
{
- Debug.Log($"[CardClick] clicked = {gameObject.name}");
- RandomStatCardData randomData = cardData as RandomStatCardData;
- randomData.ApplyToPlayer(s1, v1);
- randomData.ApplyToPlayer(s2, v2);
+ RandomStatCardData rd = cardData as RandomStatCardData;
+ rd.ApplyToPlayer(s1, v1); rd.ApplyToPlayer(s2, v2);
}
- else
- {
- cardData.Execute();
- }
-
- // ⭐ [추가] 카드 선택 직후 플레이어의 체력 UI를 강제로 동기화합니다.
- // 씬에서 PlayerHealth 스크립트를 찾아 갱신 함수를 실행합니다.
+ else { cardData.Execute(); }
FindObjectOfType()?.RefreshHealthUI();
-
- uiManager.Close();
}
}
\ No newline at end of file
diff --git a/Assets/7.Other Code/Level_Scripts/LevelUpUIManager.cs b/Assets/7.Other Code/Level_Scripts/LevelUpUIManager.cs
index aecc429a..96119ee0 100644
--- a/Assets/7.Other Code/Level_Scripts/LevelUpUIManager.cs
+++ b/Assets/7.Other Code/Level_Scripts/LevelUpUIManager.cs
@@ -1,6 +1,8 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+using UnityEngine.UI; // ⭐ 버튼 제어를 위해 필수!
+
public class LevelUpUIManager : MonoBehaviour
{
[SerializeField] private GameObject panel;
@@ -8,14 +10,23 @@ public class LevelUpUIManager : MonoBehaviour
[SerializeField] private Transform cardParent;
[SerializeField] private List cardPool;
+ [Header("--- 확정 버튼 설정 ---")]
+ // ⭐ 이 변수가 있어야 인스펙터에 Apply Button 칸이 보입니다!
+ [SerializeField] private Button applyButton;
+
+ private CardUI _selectedCardUI; // 현재 클릭된 카드 저장용
+
private void OnEnable()
{
PlayerLevelSystem.OnLevelUp += Show;
+ // ⭐ 버튼 클릭 시 OnApplyButtonClick 실행하도록 연결
+ if (applyButton != null) applyButton.onClick.AddListener(OnApplyButtonClick);
}
private void OnDisable()
{
PlayerLevelSystem.OnLevelUp -= Show;
+ if (applyButton != null) applyButton.onClick.RemoveListener(OnApplyButtonClick);
}
void Show()
@@ -23,67 +34,60 @@ public class LevelUpUIManager : MonoBehaviour
panel.SetActive(true);
Time.timeScale = 0f;
+ _selectedCardUI = null;
+ if (applyButton != null) applyButton.interactable = false; // 시작 땐 버튼 비활성
+
foreach (Transform child in cardParent)
Destroy(child.gameObject);
int slotCount = 2;
- // ===============================
- // 🔒 방어 코드
- // ===============================
- if (cardPool.Count == 0)
- {
- Debug.LogWarning("cardPool이 비어 있습니다.");
- return;
- }
-
- if (cardPrefabs.Length < slotCount)
- {
- Debug.LogError("cardPrefabs 개수가 slotCount보다 적습니다.");
- return;
- }
-
- // ===============================
- // 카드 데이터 선택
- // ===============================
+ // ⭐ [에러 해결] selectedCards를 여기서 확실히 선언합니다!
List selectedCards = new List();
if (cardPool.Count >= slotCount)
{
- List tempCardPool = new List(cardPool);
-
+ List tempPool = new List(cardPool);
for (int i = 0; i < slotCount; i++)
{
- int index = Random.Range(0, tempCardPool.Count);
- selectedCards.Add(tempCardPool[index]);
- tempCardPool.RemoveAt(index);
+ int idx = Random.Range(0, tempPool.Count);
+ selectedCards.Add(tempPool[idx]);
+ tempPool.RemoveAt(idx);
}
}
- else
+ else // 카드 부족 시 순환
{
- // ⭐ 카드 부족하면 순환
for (int i = 0; i < slotCount; i++)
- {
selectedCards.Add(cardPool[i % cardPool.Count]);
- }
}
- // ===============================
- // ⭐ 카드 프리팹 중복 제거
- // ===============================
- List tempPrefabs = new List(cardPrefabs);
-
+ // 카드 생성 및 셋업
for (int i = 0; i < slotCount; i++)
{
- int prefabIndex = Random.Range(0, tempPrefabs.Count);
- CardUI prefab = tempPrefabs[prefabIndex];
- tempPrefabs.RemoveAt(prefabIndex);
-
- CardUI ui = Instantiate(prefab, cardParent);
- ui.Setup(selectedCards[i], this);
+ // 프리팹 랜덤 선택 후 생성
+ CardUI ui = Instantiate(cardPrefabs[Random.Range(0, cardPrefabs.Length)], cardParent);
+ ui.Setup(selectedCards[i], this); // ⭐ 이제 selectedCards 에러가 뜨지 않습니다!
}
}
+ // 카드를 클릭했을 때 호출 (선택 상태 표시)
+ public void OnCardClick(CardUI clickedUI)
+ {
+ if (_selectedCardUI != null) _selectedCardUI.SetSelected(false);
+ _selectedCardUI = clickedUI;
+ _selectedCardUI.SetSelected(true);
+
+ if (applyButton != null) applyButton.interactable = true; // ⭐ 드디어 버튼 활성화!
+ }
+
+ // APPLY 버튼을 눌렀을 때만 최종 적용!
+ private void OnApplyButtonClick()
+ {
+ if (_selectedCardUI == null) return;
+ _selectedCardUI.ApplyCurrentEffect();
+ Close();
+ }
+
public void Close()
{
Time.timeScale = 1f;