From ba13eb9e51a8743995df808faef53658e4348a84 Mon Sep 17 00:00:00 2001 From: Nico Date: Wed, 23 Jul 2025 01:24:54 -0700 Subject: [PATCH] Create PlayerJumpHandler to deal with Player's jumping Create Vfx for multiple jumps while on air Finalize jumping ability with up to 3 multi-jump implementing a hacky bezier curve --- .../Player/AnimatorPlayer.controller | 116 +++ Assets/Art/Animations/Player/Jump2Up.anim | 72 ++ .../Art/Animations/Player/Jump2Up.anim.meta | 8 + Assets/Art/Animations/Player/JumpDown2.anim | 72 ++ .../Art/Animations/Player/JumpDown2.anim.meta | 8 + Assets/Art/Animations/Player/JumpLeft2.anim | 72 ++ .../Art/Animations/Player/JumpLeft2.anim.meta | 8 + Assets/Art/Animations/Player/JumpRight2.anim | 72 ++ .../Animations/Player/JumpRight2.anim.meta | 8 + Assets/Art/Animations/Vfx/VfxAirJump.anim | 91 +++ .../Art/Animations/Vfx/VfxAirJump.anim.meta | 8 + .../Art/Animations/Vfx/VfxAirJump.controller | 72 ++ .../Animations/Vfx/VfxAirJump.controller.meta | 8 + .../FX/Magic/Shield/SpriteSheetBlue.png.meta | 63 +- .../Prefabs/Characters/Player/Player.prefab | 715 ++++++++---------- Assets/Prefabs/VFX/VfxAirJump.prefab | 125 +++ Assets/Prefabs/VFX/VfxAirJump.prefab.meta | 7 + Assets/Scenes/HomeTown.unity | 343 +-------- Assets/Scripts/Extensions.meta | 8 + Assets/Scripts/Extensions/Extensions.cs | 8 + Assets/Scripts/Extensions/Extensions.cs.meta | 2 + .../Scripts/Runtime/AI/EnemyManager/Gobler.cs | 53 +- .../AI/PathFinding/PathAgentHandler.cs | 13 + .../AI/PathFinding/PathAgentHandler.cs.meta | 2 + .../Player/Classes/MeleeFighterClass.cs | 12 +- .../Characters/Player/PlayerJumpHandler.cs | 120 +++ .../Player/PlayerJumpHandler.cs.meta | 2 + .../Characters/Player/PlayerMainController.cs | 69 +- UserSettings/EditorUserSettings.asset | 4 +- UserSettings/Search.settings | 2 +- 30 files changed, 1361 insertions(+), 802 deletions(-) create mode 100644 Assets/Art/Animations/Player/Jump2Up.anim create mode 100644 Assets/Art/Animations/Player/Jump2Up.anim.meta create mode 100644 Assets/Art/Animations/Player/JumpDown2.anim create mode 100644 Assets/Art/Animations/Player/JumpDown2.anim.meta create mode 100644 Assets/Art/Animations/Player/JumpLeft2.anim create mode 100644 Assets/Art/Animations/Player/JumpLeft2.anim.meta create mode 100644 Assets/Art/Animations/Player/JumpRight2.anim create mode 100644 Assets/Art/Animations/Player/JumpRight2.anim.meta create mode 100644 Assets/Art/Animations/Vfx/VfxAirJump.anim create mode 100644 Assets/Art/Animations/Vfx/VfxAirJump.anim.meta create mode 100644 Assets/Art/Animations/Vfx/VfxAirJump.controller create mode 100644 Assets/Art/Animations/Vfx/VfxAirJump.controller.meta create mode 100644 Assets/Prefabs/VFX/VfxAirJump.prefab create mode 100644 Assets/Prefabs/VFX/VfxAirJump.prefab.meta create mode 100644 Assets/Scripts/Extensions.meta create mode 100644 Assets/Scripts/Extensions/Extensions.cs create mode 100644 Assets/Scripts/Extensions/Extensions.cs.meta create mode 100644 Assets/Scripts/Runtime/AI/PathFinding/PathAgentHandler.cs create mode 100644 Assets/Scripts/Runtime/AI/PathFinding/PathAgentHandler.cs.meta create mode 100644 Assets/Scripts/Runtime/Characters/Player/PlayerJumpHandler.cs create mode 100644 Assets/Scripts/Runtime/Characters/Player/PlayerJumpHandler.cs.meta diff --git a/Assets/Art/Animations/Player/AnimatorPlayer.controller b/Assets/Art/Animations/Player/AnimatorPlayer.controller index 7fd4b47..7916cd5 100644 --- a/Assets/Art/Animations/Player/AnimatorPlayer.controller +++ b/Assets/Art/Animations/Player/AnimatorPlayer.controller @@ -445,6 +445,18 @@ AnimatorStateMachine: - serializedVersion: 1 m_State: {fileID: 2383169368828353517} m_Position: {x: 1370, y: -50, z: 0} + - serializedVersion: 1 + m_State: {fileID: 672242331341163586} + m_Position: {x: 1580, y: -50, z: 0} + - serializedVersion: 1 + m_State: {fileID: 4863193570021348867} + m_Position: {x: 1580, y: 50, z: 0} + - serializedVersion: 1 + m_State: {fileID: 6409557014438953544} + m_Position: {x: 1580, y: 0, z: 0} + - serializedVersion: 1 + m_State: {fileID: -1623563588333065287} + m_Position: {x: 1580, y: 100, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] @@ -482,6 +494,32 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1102 &-1623563588333065287 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Jump2Down + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 508a013955df5204994c55ccccd0aacc, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1102 &-1559300709818594538 AnimatorState: serializedVersion: 6 @@ -679,6 +717,32 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1102 &672242331341163586 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Jump2Up + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 90672505eba9d14439ea9fce5751b1d0, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1101 &836608041002050471 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -873,6 +937,32 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 +--- !u!1102 &4863193570021348867 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Jump2Right + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: deecca5de1d63294faf43f134d9816f2, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1102 &5438449565649188236 AnimatorState: serializedVersion: 6 @@ -978,6 +1068,32 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1102 &6409557014438953544 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Jump2Left + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 1aaa01eeb28c1d14381fd51c5a42ecec, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1102 &7446465456891647251 AnimatorState: serializedVersion: 6 diff --git a/Assets/Art/Animations/Player/Jump2Up.anim b/Assets/Art/Animations/Player/Jump2Up.anim new file mode 100644 index 0000000..ccc5cb3 --- /dev/null +++ b/Assets/Art/Animations/Player/Jump2Up.anim @@ -0,0 +1,72 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Jump2Up + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - serializedVersion: 2 + curve: + - time: 0 + value: {fileID: 6925657076329794216, guid: 75e95e719db6b2e4bb65de9f697ac349, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: 6925657076329794216, guid: 75e95e719db6b2e4bb65de9f697ac349, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.016666668 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Art/Animations/Player/Jump2Up.anim.meta b/Assets/Art/Animations/Player/Jump2Up.anim.meta new file mode 100644 index 0000000..ac234cc --- /dev/null +++ b/Assets/Art/Animations/Player/Jump2Up.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 90672505eba9d14439ea9fce5751b1d0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Animations/Player/JumpDown2.anim b/Assets/Art/Animations/Player/JumpDown2.anim new file mode 100644 index 0000000..0d894a4 --- /dev/null +++ b/Assets/Art/Animations/Player/JumpDown2.anim @@ -0,0 +1,72 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: JumpDown2 + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - serializedVersion: 2 + curve: + - time: 0 + value: {fileID: -2873692674358858758, guid: e16c523632c3a5a409a156eab982fffe, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: -2873692674358858758, guid: e16c523632c3a5a409a156eab982fffe, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.016666668 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Art/Animations/Player/JumpDown2.anim.meta b/Assets/Art/Animations/Player/JumpDown2.anim.meta new file mode 100644 index 0000000..c9286ad --- /dev/null +++ b/Assets/Art/Animations/Player/JumpDown2.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 508a013955df5204994c55ccccd0aacc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Animations/Player/JumpLeft2.anim b/Assets/Art/Animations/Player/JumpLeft2.anim new file mode 100644 index 0000000..c798014 --- /dev/null +++ b/Assets/Art/Animations/Player/JumpLeft2.anim @@ -0,0 +1,72 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: JumpLeft2 + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - serializedVersion: 2 + curve: + - time: 0 + value: {fileID: -7038010021604649337, guid: 92ab3d090d7588540a894e7865fb3dd6, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: -7038010021604649337, guid: 92ab3d090d7588540a894e7865fb3dd6, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.016666668 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Art/Animations/Player/JumpLeft2.anim.meta b/Assets/Art/Animations/Player/JumpLeft2.anim.meta new file mode 100644 index 0000000..c6f9933 --- /dev/null +++ b/Assets/Art/Animations/Player/JumpLeft2.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1aaa01eeb28c1d14381fd51c5a42ecec +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Animations/Player/JumpRight2.anim b/Assets/Art/Animations/Player/JumpRight2.anim new file mode 100644 index 0000000..901c002 --- /dev/null +++ b/Assets/Art/Animations/Player/JumpRight2.anim @@ -0,0 +1,72 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: JumpRight2 + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - serializedVersion: 2 + curve: + - time: 0 + value: {fileID: -7815436938264237959, guid: c84e6ecb1e9254a46abab0971cd9c3ed, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: -7815436938264237959, guid: c84e6ecb1e9254a46abab0971cd9c3ed, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.016666668 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Art/Animations/Player/JumpRight2.anim.meta b/Assets/Art/Animations/Player/JumpRight2.anim.meta new file mode 100644 index 0000000..86e2c97 --- /dev/null +++ b/Assets/Art/Animations/Player/JumpRight2.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: deecca5de1d63294faf43f134d9816f2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Animations/Vfx/VfxAirJump.anim b/Assets/Art/Animations/Vfx/VfxAirJump.anim new file mode 100644 index 0000000..c65caec --- /dev/null +++ b/Assets/Art/Animations/Vfx/VfxAirJump.anim @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: VfxAirJump + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - serializedVersion: 2 + curve: + - time: 0 + value: {fileID: -4268987231942573429, guid: ed1534cb07206e140b64068f65d04c39, type: 3} + - time: 0.016666668 + value: {fileID: 4063604947933241209, guid: ed1534cb07206e140b64068f65d04c39, type: 3} + - time: 0.033333335 + value: {fileID: 3762863495410760664, guid: ed1534cb07206e140b64068f65d04c39, type: 3} + - time: 0.05 + value: {fileID: 3018076637556417880, guid: ed1534cb07206e140b64068f65d04c39, type: 3} + - time: 0.06666667 + value: {fileID: -2063246922453218979, guid: ed1534cb07206e140b64068f65d04c39, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: -4268987231942573429, guid: ed1534cb07206e140b64068f65d04c39, type: 3} + - {fileID: 4063604947933241209, guid: ed1534cb07206e140b64068f65d04c39, type: 3} + - {fileID: 3762863495410760664, guid: ed1534cb07206e140b64068f65d04c39, type: 3} + - {fileID: 3018076637556417880, guid: ed1534cb07206e140b64068f65d04c39, type: 3} + - {fileID: -2063246922453218979, guid: ed1534cb07206e140b64068f65d04c39, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.083333336 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: + - time: 0.083333336 + functionName: DestroySelf + data: + objectReferenceParameter: {fileID: 0} + floatParameter: 0 + intParameter: 0 + messageOptions: 0 diff --git a/Assets/Art/Animations/Vfx/VfxAirJump.anim.meta b/Assets/Art/Animations/Vfx/VfxAirJump.anim.meta new file mode 100644 index 0000000..6a1354d --- /dev/null +++ b/Assets/Art/Animations/Vfx/VfxAirJump.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 274aa100acbcd0e4e9396469a2751833 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Animations/Vfx/VfxAirJump.controller b/Assets/Art/Animations/Vfx/VfxAirJump.controller new file mode 100644 index 0000000..cd032b6 --- /dev/null +++ b/Assets/Art/Animations/Vfx/VfxAirJump.controller @@ -0,0 +1,72 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-8379236649714058836 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: VfxAirJump + m_Speed: 0.5 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 274aa100acbcd0e4e9396469a2751833, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &-6069614064410111540 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -8379236649714058836} + m_Position: {x: 240, y: 110, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -8379236649714058836} +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: VfxAirJump + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: -6069614064410111540} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} diff --git a/Assets/Art/Animations/Vfx/VfxAirJump.controller.meta b/Assets/Art/Animations/Vfx/VfxAirJump.controller.meta new file mode 100644 index 0000000..2a4361d --- /dev/null +++ b/Assets/Art/Animations/Vfx/VfxAirJump.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fc4d08e14386a5d488094818c2ae94e8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Sprites/FX/Magic/Shield/SpriteSheetBlue.png.meta b/Assets/Art/Sprites/FX/Magic/Shield/SpriteSheetBlue.png.meta index 9392f50..d6b0437 100644 --- a/Assets/Art/Sprites/FX/Magic/Shield/SpriteSheetBlue.png.meta +++ b/Assets/Art/Sprites/FX/Magic/Shield/SpriteSheetBlue.png.meta @@ -63,7 +63,7 @@ TextureImporter: spriteMeshType: 1 alignment: 0 spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 + spritePixelsToUnits: 16 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 @@ -128,10 +128,10 @@ TextureImporter: name: SpriteSheetBlue_0 rect: serializedVersion: 2 - x: 47 - y: 1 - width: 50 - height: 19 + x: 0 + y: 0 + width: 24 + height: 26 alignment: 0 pivot: {x: 0, y: 0} border: {x: 0, y: 0, z: 0, w: 0} @@ -150,10 +150,10 @@ TextureImporter: name: SpriteSheetBlue_1 rect: serializedVersion: 2 - x: 96 - y: 14 + x: 24 + y: 0 width: 24 - height: 12 + height: 26 alignment: 0 pivot: {x: 0, y: 0} border: {x: 0, y: 0, z: 0, w: 0} @@ -172,10 +172,10 @@ TextureImporter: name: SpriteSheetBlue_2 rect: serializedVersion: 2 - x: 122 - y: 18 - width: 20 - height: 8 + x: 48 + y: 0 + width: 24 + height: 26 alignment: 0 pivot: {x: 0, y: 0} border: {x: 0, y: 0, z: 0, w: 0} @@ -194,10 +194,10 @@ TextureImporter: name: SpriteSheetBlue_3 rect: serializedVersion: 2 - x: 2 + x: 72 y: 0 - width: 20 - height: 6 + width: 24 + height: 26 alignment: 0 pivot: {x: 0, y: 0} border: {x: 0, y: 0, z: 0, w: 0} @@ -216,10 +216,10 @@ TextureImporter: name: SpriteSheetBlue_4 rect: serializedVersion: 2 - x: 24 + x: 96 y: 0 width: 24 - height: 11 + height: 26 alignment: 0 pivot: {x: 0, y: 0} border: {x: 0, y: 0, z: 0, w: 0} @@ -234,11 +234,33 @@ TextureImporter: indices: edges: [] weights: [] + - serializedVersion: 2 + name: SpriteSheetBlue_5 + rect: + serializedVersion: 2 + x: 120 + y: 0 + width: 24 + height: 26 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 5a5cad39ca7bc614091186801321e43c + internalID: -1757959404 + vertices: [] + indices: + edges: [] + weights: [] outline: [] customData: physicsShape: [] bones: [] - spriteID: + spriteID: 4d49ff54bc3958b4796a958e9607ac15 internalID: 0 vertices: [] indices: @@ -246,13 +268,16 @@ TextureImporter: weights: [] secondaryTextures: [] spriteCustomMetadata: - entries: [] + entries: + - key: SpriteEditor.SliceSettings + value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":24.0,"y":26.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}' nameFileIdTable: SpriteSheetBlue_0: -2063246922453218979 SpriteSheetBlue_1: 3018076637556417880 SpriteSheetBlue_2: 3762863495410760664 SpriteSheetBlue_3: 4063604947933241209 SpriteSheetBlue_4: -4268987231942573429 + SpriteSheetBlue_5: -1757959404 mipmapLimitGroupName: pSDRemoveMatte: 0 userData: diff --git a/Assets/Prefabs/Characters/Player/Player.prefab b/Assets/Prefabs/Characters/Player/Player.prefab index 079c433..99b4d46 100644 --- a/Assets/Prefabs/Characters/Player/Player.prefab +++ b/Assets/Prefabs/Characters/Player/Player.prefab @@ -1,5 +1,115 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &2119669945039288209 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3832324886000091} + - component: {fileID: 7095867742860802620} + - component: {fileID: 3950864415850235368} + m_Layer: 9 + m_Name: MeleeAnimator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3832324886000091 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2119669945039288209} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3.06, y: -1.81, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2439806561853046685} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &7095867742860802620 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2119669945039288209} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 19053954f80562a45a8e89efeabea17d, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!212 &3950864415850235368 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2119669945039288209} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 651355007 + m_SortingLayer: 4 + m_SortingOrder: 0 + m_Sprite: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 3.90625, y: 3.8125} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 0 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &3181745081738111622 GameObject: m_ObjectHideFlags: 0 @@ -9,6 +119,8 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1897313902523258814} + - component: {fileID: 4619478551232066145} + - component: {fileID: 8731340430810475092} m_Layer: 9 m_Name: Visuals m_TagString: Untagged @@ -25,16 +137,82 @@ Transform: m_GameObject: {fileID: 3181745081738111622} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: 0, y: -0.03, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1787569555844345674} + - {fileID: 7536677720423648120} - {fileID: 7702329272476180476} - {fileID: 9053513097682960937} - - {fileID: 4613858514893913661} m_Father: {fileID: 4060073025839678449} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!210 &4619478551232066145 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3181745081738111622} + m_Enabled: 1 + m_SortingLayerID: 651355007 + m_SortingLayer: 4 + m_SortingOrder: 0 + m_SortAtRoot: 0 +--- !u!212 &8731340430810475092 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3181745081738111622} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 0 + m_MaskInteraction: 0 + m_SpriteSortPoint: 1 --- !u!1 &3555620562472737319 GameObject: m_ObjectHideFlags: 0 @@ -62,11 +240,11 @@ Transform: m_GameObject: {fileID: 3555620562472737319} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: 0, y: 1.0859997, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1897313902523258814} + m_Father: {fileID: 7536677720423648120} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!212 &3647552498760287226 SpriteRenderer: @@ -145,274 +323,6 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 ---- !u!1 &4553260134269457595 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3783325528514321640} - m_Layer: 9 - m_Name: Attacks - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3783325528514321640 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4553260134269457595} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 1.0885801, y: 0.06223999, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 2112636419898588415} - m_Father: {fileID: 4060073025839678449} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &5233403024226430001 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2112636419898588415} - - component: {fileID: 3038315303589083823} - - component: {fileID: 4447032532324196901} - - component: {fileID: 5203709406065552287} - - component: {fileID: 7139240040885940656} - - component: {fileID: 8783676367030864381} - - component: {fileID: 1825172400684165510} - m_Layer: 9 - m_Name: MeleeAttacks - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2112636419898588415 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5233403024226430001} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.6995802, y: -0.42724, z: 0} - m_LocalScale: {x: 3, y: 3, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3783325528514321640} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &3038315303589083823 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5233403024226430001} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5cb42c19bc5ec4d419f9af6852bc2e5c, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!95 &4447032532324196901 -Animator: - serializedVersion: 7 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5233403024226430001} - m_Enabled: 1 - m_Avatar: {fileID: 0} - m_Controller: {fileID: 9100000, guid: e49e78b0eadab0d4c8246fb42c2419a6, type: 2} - m_CullingMode: 0 - m_UpdateMode: 0 - m_ApplyRootMotion: 0 - m_LinearVelocityBlending: 0 - m_StabilizeFeet: 0 - m_AnimatePhysics: 0 - m_WarningMessage: - m_HasTransformHierarchy: 1 - m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorStateOnDisable: 0 - m_WriteDefaultValuesOnDisable: 0 ---- !u!212 &5203709406065552287 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5233403024226430001} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RayTracingAccelStructBuildFlagsOverride: 0 - m_RayTracingAccelStructBuildFlags: 1 - m_SmallMeshCulling: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 651355007 - m_SortingLayer: 4 - m_SortingOrder: 0 - m_Sprite: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 0.64, y: 0.32} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 0 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!61 &7139240040885940656 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5233403024226430001} - m_Enabled: 1 - serializedVersion: 3 - m_Density: 1 - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_ForceSendLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_ForceReceiveLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_ContactCaptureLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_CallbackLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_IsTrigger: 1 - m_UsedByEffector: 0 - m_CompositeOperation: 0 - m_CompositeOrder: 0 - m_Offset: {x: -0.14290781, y: -0.07356349} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0.5, y: 0.5} - oldSize: {x: 0.64, y: 0.32} - newSize: {x: 0.64, y: 0.32} - adaptiveTilingThreshold: 0.5 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - m_Size: {x: 0.18294096, y: 0.034430884} - m_EdgeRadius: 0 ---- !u!70 &8783676367030864381 -CapsuleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5233403024226430001} - m_Enabled: 1 - serializedVersion: 3 - m_Density: 1 - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_ForceSendLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_ForceReceiveLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_ContactCaptureLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_CallbackLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_IsTrigger: 1 - m_UsedByEffector: 0 - m_CompositeOperation: 0 - m_CompositeOrder: 0 - m_Offset: {x: -0.13767865, y: -0.0786782} - m_Size: {x: 0.23338662, y: 0.06193253} - m_Direction: 1 ---- !u!50 &1825172400684165510 -Rigidbody2D: - serializedVersion: 5 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5233403024226430001} - m_BodyType: 1 - m_Simulated: 1 - m_UseFullKinematicContacts: 0 - m_UseAutoMass: 0 - m_Mass: 1 - m_LinearDamping: 0 - m_AngularDamping: 0.05 - m_GravityScale: 1 - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_Interpolate: 0 - m_SleepingMode: 1 - m_CollisionDetection: 0 - m_Constraints: 0 --- !u!1 &6399305692263416751 GameObject: m_ObjectHideFlags: 0 @@ -440,7 +350,7 @@ Transform: m_GameObject: {fileID: 6399305692263416751} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.028, y: -1.064, z: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 0.5, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -617,6 +527,103 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &7676959996562900859 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7536677720423648120} + m_Layer: 9 + m_Name: CharacterPos + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7536677720423648120 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7676959996562900859} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1787569555844345674} + m_Father: {fileID: 1897313902523258814} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7840761972286651363 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2439806561853046685} + - component: {fileID: 4354370762276009774} + - component: {fileID: 3968396933541434516} + m_Layer: 9 + m_Name: AttackAnimations + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2439806561853046685 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7840761972286651363} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.08600044, z: 0} + m_LocalScale: {x: 0.9, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3832324886000091} + m_Father: {fileID: 4060073025839678449} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!210 &4354370762276009774 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7840761972286651363} + m_Enabled: 1 + m_SortingLayerID: 651355007 + m_SortingLayer: 4 + m_SortingOrder: 0 + m_SortAtRoot: 0 +--- !u!114 &3968396933541434516 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7840761972286651363} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5cb42c19bc5ec4d419f9af6852bc2e5c, type: 3} + m_Name: + m_EditorClassIdentifier: + Player: {fileID: 0} + MeleeAnimator: {fileID: 7095867742860802620} + MeleeAnimationNames: + - Slash1 + - Slash2 + - Slash1 + MeleeAttackState: 060000000700000008000000 --- !u!1 &9074809610135348735 GameObject: m_ObjectHideFlags: 0 @@ -5450,140 +5457,6 @@ ParticleSystemRenderer: m_MeshWeighting2: 1 m_MeshWeighting3: 1 m_MaskInteraction: 0 ---- !u!1 &9098681062314285509 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4613858514893913661} - - component: {fileID: 1597424103648595187} - - component: {fileID: 4673608109423225760} - m_Layer: 9 - m_Name: Structural - m_TagString: Structural - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4613858514893913661 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9098681062314285509} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.434, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1897313902523258814} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!212 &1597424103648595187 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9098681062314285509} - m_Enabled: 0 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RayTracingAccelStructBuildFlagsOverride: 0 - m_RayTracingAccelStructBuildFlags: 1 - m_SmallMeshCulling: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_Sprite: {fileID: -9095717837082945937, guid: bd3cb4af8406d4436a2ae8c2aafe1f8d, type: 3} - m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 0} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 1, y: 1} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!61 &4673608109423225760 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9098681062314285509} - m_Enabled: 1 - serializedVersion: 3 - m_Density: 1 - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_ForceSendLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_ForceReceiveLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_ContactCaptureLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_CallbackLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_CompositeOperation: 0 - m_CompositeOrder: 0 - m_Offset: {x: -0.00097227097, y: -0.59421855} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0.5, y: 0.5} - oldSize: {x: 1, y: 2} - newSize: {x: 1, y: 1} - adaptiveTilingThreshold: 0.5 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - m_Size: {x: 0.8092319, y: 0.33894694} - m_EdgeRadius: 0 --- !u!1 &9147163641451663911 GameObject: m_ObjectHideFlags: 0 @@ -5617,8 +5490,8 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 2439806561853046685} - {fileID: 1897313902523258814} - - {fileID: 3783325528514321640} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &7211159566486303287 @@ -5664,6 +5537,7 @@ MonoBehaviour: MagicPower: 0 AnimationToPlay: AvailableSkills: [] + AttackAnimator: {fileID: 3968396933541434516} ComboResetTime: 0 LastComboTime: 0 ChargingAnAttack: 0 @@ -5673,15 +5547,17 @@ MonoBehaviour: ComboTimeElapsed: 0 Cooldown: 0 TimesUp: 0 + DamageMultiplier: 0 + DamageOffset: 0 CurrentState: 0 - AttackAnimator: {fileID: 3038315303589083823} + AttackAnimator: {fileID: 3968396933541434516} StaminaMax: 100 - Stamina: 0 - StaminaRegenPerSecond: 20 + Stamina: 100 + StaminaRegenPerSecond: 100 StaminaSliderHud: {fileID: 0} MoveSpeed: 16 MoveSpeedDampener: 1 - DashSpeedInitial: 200 + DashSpeedInitial: 100 DashSpeed: 0 DashDecayRate: 30 DashDelay1: 0.05 @@ -5692,6 +5568,15 @@ MonoBehaviour: VfxKineticSurge: {fileID: 4566952472781634859, guid: 0d7c4835b1f550241bb630daef9e33e8, type: 3} VfxShockwave: {fileID: 8992219285309707884, guid: 1f334a9f024858d44b8a3ff8bd31dc97, type: 3} PrevDirection: {x: 0, y: 0} + Jump: + Transform: {fileID: 1787569555844345674} + GroundFakeZ: 0 + CurrentFakeZ: 0 + Height: 0 + AirTime: 0 + a: 0 + b: 0 + c: 0 SkillInUse: 0 LastDirection: 1 --- !u!50 &1203434784585445923 @@ -5702,7 +5587,7 @@ Rigidbody2D: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 9147163641451663911} - m_BodyType: 0 + m_BodyType: 1 m_Simulated: 1 m_UseFullKinematicContacts: 0 m_UseAutoMass: 0 @@ -5737,7 +5622,7 @@ BoxCollider2D: m_Bits: 0 m_ExcludeLayers: serializedVersion: 2 - m_Bits: 0 + m_Bits: 136 m_LayerOverridePriority: 0 m_ForceSendLayers: serializedVersion: 2 diff --git a/Assets/Prefabs/VFX/VfxAirJump.prefab b/Assets/Prefabs/VFX/VfxAirJump.prefab new file mode 100644 index 0000000..e6634cd --- /dev/null +++ b/Assets/Prefabs/VFX/VfxAirJump.prefab @@ -0,0 +1,125 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8992219285309707884 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7258755274500634986} + - component: {fileID: 1928732523521894144} + - component: {fileID: 7296548179253690114} + - component: {fileID: 4426888841100065976} + m_Layer: 0 + m_Name: VfxAirJump + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7258755274500634986 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8992219285309707884} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &1928732523521894144 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8992219285309707884} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: fc4d08e14386a5d488094818c2ae94e8, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!212 &7296548179253690114 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8992219285309707884} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 651355007 + m_SortingLayer: 4 + m_SortingOrder: 0 + m_Sprite: {fileID: 5546671543968653177, guid: 583c84a3c48ecd1499db074e7b0d4569, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.4, y: 0.4} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &4426888841100065976 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8992219285309707884} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4bfaa983da368bb49ba4ae94e61e97e6, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefabs/VFX/VfxAirJump.prefab.meta b/Assets/Prefabs/VFX/VfxAirJump.prefab.meta new file mode 100644 index 0000000..5dc339f --- /dev/null +++ b/Assets/Prefabs/VFX/VfxAirJump.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8ee310226a115d042a50715807f16bb7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/HomeTown.unity b/Assets/Scenes/HomeTown.unity index d3fa341..40e2e33 100644 --- a/Assets/Scenes/HomeTown.unity +++ b/Assets/Scenes/HomeTown.unity @@ -167458,7 +167458,7 @@ Transform: m_GameObject: {fileID: 308205144} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -71.07149, y: -11.110194, z: -20.03828} + m_LocalPosition: {x: -72.18149, y: -11.110194, z: -20.03828} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -175637,7 +175637,7 @@ Transform: m_GameObject: {fileID: 519420028} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -71.07149, y: -11.110194, z: -20.03828} + m_LocalPosition: {x: -72.18149, y: -11.110194, z: -20.03828} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -195493,71 +195493,6 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &954915986 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 954915987} - - component: {fileID: 954915989} - - component: {fileID: 954915990} - m_Layer: 9 - m_Name: AttackAnimations - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &954915987 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 954915986} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.08600044, z: 0} - m_LocalScale: {x: 0.9, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1868591327} - m_Father: {fileID: 1283345871} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!210 &954915989 -SortingGroup: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 954915986} - m_Enabled: 1 - m_SortingLayerID: 651355007 - m_SortingLayer: 4 - m_SortingOrder: 0 - m_SortAtRoot: 0 ---- !u!114 &954915990 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 954915986} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5cb42c19bc5ec4d419f9af6852bc2e5c, type: 3} - m_Name: - m_EditorClassIdentifier: - Player: {fileID: 0} - MeleeAnimator: {fileID: 1868591329} - MeleeAnimationNames: - - Slash1 - - Slash2 - - Slash1 - MeleeAttackState: 060000000700000008000000 --- !u!1 &972432121 GameObject: m_ObjectHideFlags: 0 @@ -200832,11 +200767,6 @@ ParticleSystem: m_PostInfinity: 2 m_RotationOrder: 4 vectorLabel1_3: W ---- !u!4 &1283345871 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 4060073025839678449, guid: d00d92ab204198c489965b31a298b234, type: 3} - m_PrefabInstance: {fileID: 2316236105731553357} - m_PrefabAsset: {fileID: 0} --- !u!1 &1302188853 GameObject: m_ObjectHideFlags: 0 @@ -201356,78 +201286,6 @@ Transform: - {fileID: 308205147} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1702632256 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 3181745081738111622, guid: d00d92ab204198c489965b31a298b234, type: 3} - m_PrefabInstance: {fileID: 2316236105731553357} - m_PrefabAsset: {fileID: 0} ---- !u!212 &1702632258 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1702632256} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RayTracingAccelStructBuildFlagsOverride: 0 - m_RayTracingAccelStructBuildFlags: 1 - m_SmallMeshCulling: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, 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: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_Sprite: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 1, y: 1} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 0 - m_MaskInteraction: 0 - m_SpriteSortPoint: 1 ---- !u!210 &1702632259 -SortingGroup: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1702632256} - m_Enabled: 1 - m_SortingLayerID: 651355007 - m_SortingLayer: 4 - m_SortingOrder: 0 - m_SortAtRoot: 0 --- !u!213 &1705726246 Sprite: m_ObjectHideFlags: 0 @@ -201921,116 +201779,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1865767587} m_CullTransparentMesh: 1 ---- !u!1 &1868591326 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1868591327} - - component: {fileID: 1868591329} - - component: {fileID: 1868591328} - m_Layer: 9 - m_Name: MeleeAnimator - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1868591327 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1868591326} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 3.06, y: -1.81, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 954915987} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!212 &1868591328 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1868591326} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RayTracingAccelStructBuildFlagsOverride: 0 - m_RayTracingAccelStructBuildFlags: 1 - m_SmallMeshCulling: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, 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: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 651355007 - m_SortingLayer: 4 - m_SortingOrder: 0 - m_Sprite: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 3.90625, y: 3.8125} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 0 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!95 &1868591329 -Animator: - serializedVersion: 7 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1868591326} - m_Enabled: 1 - m_Avatar: {fileID: 0} - m_Controller: {fileID: 9100000, guid: 19053954f80562a45a8e89efeabea17d, type: 2} - m_CullingMode: 0 - m_UpdateMode: 0 - m_ApplyRootMotion: 0 - m_LinearVelocityBlending: 0 - m_StabilizeFeet: 0 - m_AnimatePhysics: 0 - m_WarningMessage: - m_HasTransformHierarchy: 1 - m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorStateOnDisable: 0 - m_WriteDefaultValuesOnDisable: 0 --- !u!213 &1874345308 Sprite: m_ObjectHideFlags: 0 @@ -202565,29 +202313,13 @@ PrefabInstance: m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1680573792925415762, guid: d00d92ab204198c489965b31a298b234, type: 3} - propertyPath: Stamina - value: 100 - objectReference: {fileID: 0} - - target: {fileID: 1680573792925415762, guid: d00d92ab204198c489965b31a298b234, type: 3} - propertyPath: AttackAnimator + propertyPath: VfxAirJump value: - objectReference: {fileID: 954915990} - - target: {fileID: 1680573792925415762, guid: d00d92ab204198c489965b31a298b234, type: 3} - propertyPath: DashSpeedInitial - value: 100 - objectReference: {fileID: 0} + objectReference: {fileID: 8992219285309707884, guid: 8ee310226a115d042a50715807f16bb7, type: 3} - target: {fileID: 1680573792925415762, guid: d00d92ab204198c489965b31a298b234, type: 3} propertyPath: StaminaSliderHud value: objectReference: {fileID: 1940124276} - - target: {fileID: 1680573792925415762, guid: d00d92ab204198c489965b31a298b234, type: 3} - propertyPath: StaminaRegenPerSecond - value: 100 - objectReference: {fileID: 0} - - target: {fileID: 1680573792925415762, guid: d00d92ab204198c489965b31a298b234, type: 3} - propertyPath: FighterClass.AttackAnimator - value: - objectReference: {fileID: 954915990} - target: {fileID: 1680573792925415762, guid: d00d92ab204198c489965b31a298b234, type: 3} propertyPath: 'ClassIndicators.Array.data[0]' value: @@ -202604,21 +202336,9 @@ PrefabInstance: propertyPath: 'ClassIndicators.Array.data[3]' value: objectReference: {fileID: 1731397399} - - target: {fileID: 1787569555844345674, guid: d00d92ab204198c489965b31a298b234, type: 3} - propertyPath: m_LocalPosition.y - value: 1.086 - objectReference: {fileID: 0} - - target: {fileID: 1897313902523258814, guid: d00d92ab204198c489965b31a298b234, type: 3} - propertyPath: m_LocalPosition.y - value: -0.03 - objectReference: {fileID: 0} - - target: {fileID: 3647552498760287226, guid: d00d92ab204198c489965b31a298b234, type: 3} - propertyPath: m_SpriteSortPoint - value: 0 - objectReference: {fileID: 0} - target: {fileID: 4060073025839678449, guid: d00d92ab204198c489965b31a298b234, type: 3} propertyPath: m_LocalPosition.x - value: -71.27 + value: -72.38 objectReference: {fileID: 0} - target: {fileID: 4060073025839678449, guid: d00d92ab204198c489965b31a298b234, type: 3} propertyPath: m_LocalPosition.y @@ -202656,37 +202376,42 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7702329272476180476, guid: d00d92ab204198c489965b31a298b234, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7702329272476180476, guid: d00d92ab204198c489965b31a298b234, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + - target: {fileID: 9117212351613092415, guid: d00d92ab204198c489965b31a298b234, type: 3} + propertyPath: m_SpriteTilingProperty.pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 9117212351613092415, guid: d00d92ab204198c489965b31a298b234, type: 3} - propertyPath: m_ExcludeLayers.m_Bits - value: 136 + propertyPath: m_SpriteTilingProperty.pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 9117212351613092415, guid: d00d92ab204198c489965b31a298b234, type: 3} + propertyPath: m_SpriteTilingProperty.newSize.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 9117212351613092415, guid: d00d92ab204198c489965b31a298b234, type: 3} + propertyPath: m_SpriteTilingProperty.newSize.y + value: 0.19 + objectReference: {fileID: 0} + - target: {fileID: 9117212351613092415, guid: d00d92ab204198c489965b31a298b234, type: 3} + propertyPath: m_SpriteTilingProperty.oldSize.x + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 9117212351613092415, guid: d00d92ab204198c489965b31a298b234, type: 3} + propertyPath: m_SpriteTilingProperty.oldSize.y + value: 1.625 + objectReference: {fileID: 0} + - target: {fileID: 9117212351613092415, guid: d00d92ab204198c489965b31a298b234, type: 3} + propertyPath: m_SpriteTilingProperty.adaptiveTilingThreshold + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 9147163641451663911, guid: d00d92ab204198c489965b31a298b234, type: 3} propertyPath: m_Name value: Player objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: - - {fileID: 4553260134269457595, guid: d00d92ab204198c489965b31a298b234, type: 3} - - {fileID: 9098681062314285509, guid: d00d92ab204198c489965b31a298b234, type: 3} - m_AddedGameObjects: - - targetCorrespondingSourceObject: {fileID: 4060073025839678449, guid: d00d92ab204198c489965b31a298b234, type: 3} - insertIndex: 0 - addedObject: {fileID: 954915987} - m_AddedComponents: - - targetCorrespondingSourceObject: {fileID: 3181745081738111622, guid: d00d92ab204198c489965b31a298b234, type: 3} - insertIndex: -1 - addedObject: {fileID: 1702632259} - - targetCorrespondingSourceObject: {fileID: 3181745081738111622, guid: d00d92ab204198c489965b31a298b234, type: 3} - insertIndex: -1 - addedObject: {fileID: 1702632258} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: d00d92ab204198c489965b31a298b234, type: 3} --- !u!1001 &3495966144891276242 PrefabInstance: @@ -203069,7 +202794,7 @@ SceneRoots: - {fileID: 267352325} - {fileID: 1990193559} - {fileID: 1177372200} - - {fileID: 2316236105731553357} - {fileID: 1341160148} - {fileID: 268356502} - {fileID: 584901200} + - {fileID: 2316236105731553357} diff --git a/Assets/Scripts/Extensions.meta b/Assets/Scripts/Extensions.meta new file mode 100644 index 0000000..6c960b9 --- /dev/null +++ b/Assets/Scripts/Extensions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 65adb45ed03fedc4e89a53477f5c8274 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Extensions/Extensions.cs b/Assets/Scripts/Extensions/Extensions.cs new file mode 100644 index 0000000..44c0fa6 --- /dev/null +++ b/Assets/Scripts/Extensions/Extensions.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +public static class IsoExtensions { + public static Vector2 NormalizedIso(this Vector2 input) { + Vector2 adjusted = new Vector2(input.x, input.y * 0.5f); + return adjusted.normalized; + } +} diff --git a/Assets/Scripts/Extensions/Extensions.cs.meta b/Assets/Scripts/Extensions/Extensions.cs.meta new file mode 100644 index 0000000..8f93532 --- /dev/null +++ b/Assets/Scripts/Extensions/Extensions.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2c1c7bba98aa12d4a800380fa270fa7b \ No newline at end of file diff --git a/Assets/Scripts/Runtime/AI/EnemyManager/Gobler.cs b/Assets/Scripts/Runtime/AI/EnemyManager/Gobler.cs index 9f16d11..598283d 100644 --- a/Assets/Scripts/Runtime/AI/EnemyManager/Gobler.cs +++ b/Assets/Scripts/Runtime/AI/EnemyManager/Gobler.cs @@ -38,12 +38,14 @@ public class Gobler : Alive { private NavMeshAgent PathAgent; - private List Materials; + //private List Materials; + private Material MaterialColorOverlay; public Gobler(GameObject owner) { Owner = owner; PathAgent = Owner.GetComponent(); + PathAgent.updatePosition = false; PathAgent.updateRotation = false; PathAgent.updateUpAxis = false; PathAgent.speed = Speed; @@ -55,15 +57,37 @@ public class Gobler : Alive { OnDeath += () => SetState(State.Die); Rigidbody = Owner.GetComponent(); - Materials = Owner.GetComponentsInChildren().Select(x => x.material).ToList(); + foreach (var material in Owner.GetComponentsInChildren().Select(x => x.material).ToList()) { + switch (material.name.Split(' ')[0]) { + case "DamageFlashMat": MaterialColorOverlay = material; break; + } + } TextPopUp = new FloatingTextSpawner(Owner.transform, 1); SetState(State.GoToCrystal); - EnemyManagers[Enemies.Gobler].UpdateTick += Update; + SubscribeToEvent(); + //EnemyManagers[Enemies.Gobler].UpdateTick += () => PathAgentHandler.UpdatePositionIso(PathAgent, owner.transform); + //EnemyManagers[Enemies.Gobler].UpdateTick += Update; + } + + private Action cachedUpdate; + private void SubscribeToEvent() { + cachedUpdate = () => { + if (PathAgent == null || Owner == null) return; + PathAgentHandler.UpdatePositionIso(PathAgent, Owner.transform); + Update(); + }; + + EnemyManagers[Enemies.Gobler].UpdateTick += cachedUpdate; EnemyManagers[Enemies.Gobler].GizmoTick += OnDrawGizmos; } + private void UnsubscribeToEvent() { + EnemyManagers[Enemies.Gobler].UpdateTick -= cachedUpdate; + EnemyManagers[Enemies.Gobler].GizmoTick -= OnDrawGizmos; + } + public float DistFromPlayer { get; private set; } public float DistFromCrystal { get; private set; } @@ -129,20 +153,32 @@ public class Gobler : Alive { case State.AttackPlayer: + break; case State.TakeDamage: Rigidbody.linearVelocity = DirectionOfDamage * Knockback * 10 * InvincibilityLeft; - Materials.ForEach(x => x.SetFloat("_FlashAmount", InvincibilityLeft)); + MaterialColorOverlay.SetFloat("_FlashAmount", InvincibilityLeft); if (!IsInvincible) SetState(State.None); break; + case State.PrepareAttack: + MaterialColorOverlay.SetFloat("_FlashColor", 1 - InvincibilityLeft); + if (!IsInvincible) SetState(State.FinalizeAttack); break; case State.FinalizeAttack: + Collider2D[] hits = Physics2D.OverlapCircleAll(MyPos + Vector2.down, 4); + foreach (var hit in hits) { + if (!hit.CompareTag("PlayerHurtBox")) continue; + + //GameObject parent = hit.transform.parent?.gameObject; + //Vector2 knockbakDirection = ActiveClass.HitBoxDraw.Directional ? PrevDirection : parent.transform.position - transform.position; + //EnemySpawnerData.EnemyMap[parent].Damage(ActiveClass.HitBoxDraw.Damage, knockbakDirection, ActiveClass.HitBoxDraw.Knockback); + } break; @@ -180,11 +216,18 @@ public class Gobler : Alive { case State.TakeDamage: PathAgent.isStopped = true; TextPopUp.SpawnFloatingText(DamageTaken.ToString(), Color.red, 3); - Materials.ForEach(x => x.SetColor("_FlashColor", Color.white)); + MaterialColorOverlay.SetColor("_FlashColor", Color.white); + break; + + + case State.PrepareAttack: + PathAgent.isStopped = true; + MaterialColorOverlay.SetColor("_FlashColor", Color.purple); break; case State.Die: + UnsubscribeToEvent(); SpawnableEnemyInfo.DestroyEnemy(Owner, Enemies.Gobler); SetState(State.None); break; diff --git a/Assets/Scripts/Runtime/AI/PathFinding/PathAgentHandler.cs b/Assets/Scripts/Runtime/AI/PathFinding/PathAgentHandler.cs new file mode 100644 index 0000000..8dbc4c6 --- /dev/null +++ b/Assets/Scripts/Runtime/AI/PathFinding/PathAgentHandler.cs @@ -0,0 +1,13 @@ +using UnityEngine; +using UnityEngine.AI; + +public static class PathAgentHandler { + public static void UpdatePositionIso(NavMeshAgent agent, Transform transform) { + if (agent.hasPath) { + Vector3 desired = agent.desiredVelocity; + Vector3 corrected = new Vector3(desired.x, desired.y * 0.5f, desired.z); + transform.position += corrected * Time.deltaTime; + } + agent.nextPosition = transform.position; + } +} diff --git a/Assets/Scripts/Runtime/AI/PathFinding/PathAgentHandler.cs.meta b/Assets/Scripts/Runtime/AI/PathFinding/PathAgentHandler.cs.meta new file mode 100644 index 0000000..78dbca3 --- /dev/null +++ b/Assets/Scripts/Runtime/AI/PathFinding/PathAgentHandler.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3bdf7048073baad42904575a6abed990 \ No newline at end of file diff --git a/Assets/Scripts/Runtime/Characters/Player/Classes/MeleeFighterClass.cs b/Assets/Scripts/Runtime/Characters/Player/Classes/MeleeFighterClass.cs index 28828a7..b7e855b 100644 --- a/Assets/Scripts/Runtime/Characters/Player/Classes/MeleeFighterClass.cs +++ b/Assets/Scripts/Runtime/Characters/Player/Classes/MeleeFighterClass.cs @@ -106,7 +106,7 @@ public class MeleeFighterClass : ClassBase { } - if (!ChargingAnAttack && TimesUp || Player.IsJumping) { + if (!ChargingAnAttack && TimesUp || Player.Jump.Active) { Player.MoveSpeedDampener = 1; ChangeState(AttackState.None); AttackAnimator?.MeleeResetKineticCharge(); @@ -144,8 +144,8 @@ public class MeleeFighterClass : ClassBase { if ((Time.time - Player.DashTime) <= 0.1f) ChangeState(AttackState.PhaseCleave, 1.5f); - else if (Player.IsJumping) { - if (Player.ActionAfterJumpReady) + else if (Player.Jump.Active) { + if (Player.Jump.IsNonBlocking) ChangeState(AttackState.Shockwave, 0); } else ChangeState(AttackState.PrepareBasicAttack1, 0.35f); @@ -176,7 +176,7 @@ public class MeleeFighterClass : ClassBase { if (Player.IsDashing) ChangeState(AttackState.None); - else if (Player.IsJumping) + else if (Player.Jump.Active) ChangeState(AttackState.None); else ChangeState(AttackState.DrainEdge); @@ -228,7 +228,7 @@ public class MeleeFighterClass : ClassBase { switch (CurrentState) { case AttackState.None: if (Player.IsDashing) { - } else if (Player.IsJumping) { + } else if (Player.Jump.Active) { } else { } break; @@ -236,7 +236,7 @@ public class MeleeFighterClass : ClassBase { AnimationToPlay = "Shockwave"; Player.VfxShockwavePool.Get(Player.transform.position); CreateHitBoxOffset(0, 5, 0.1f, 0.1f, (20 * DamageMultiplier) + DamageOffset, 20); - Player.IsJumping = false; + Player.Jump.Stop(); break; case AttackState.BladeVortex: diff --git a/Assets/Scripts/Runtime/Characters/Player/PlayerJumpHandler.cs b/Assets/Scripts/Runtime/Characters/Player/PlayerJumpHandler.cs new file mode 100644 index 0000000..7028112 --- /dev/null +++ b/Assets/Scripts/Runtime/Characters/Player/PlayerJumpHandler.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections; +using System.Data; +using System.Linq; +using Unity.VisualScripting; +using UnityEditor; +using UnityEngine; + + +[Serializable] +public class PlayerJumpHandler { + private Player Player; + public Transform Transform; + private Vector2 Position => Transform.position; + + + [Header("FakeZ and Jump Attributes")] + public float GroundFakeZ = 0; + public float CurrentFakeZ = 0; + public float Height = 2.5f; + public float AirTime = 0.7f; + public float FreeFallSpeedPerSec = 13.5f; + public bool Active { get; set; } + public bool Paused { get; set; } + public bool IsFalling => TimeElapsedNormalized > 0.5; + public bool IsFreeFalling => TimeElapsedNormalized > 1; + public float LastJump { get; private set; } + public float PauseTimeStamp { get; private set; } + public float PauseTime { get; private set; } = 0; + public float TimeElapsedNormalized => (Time.time - LastJump) / AirTime; + public float TimeLeftNormalized => 1 - TimeElapsedNormalized; + public bool IsNonBlocking => !Active || (Time.time - LastJump > 0.03f); + + private int JumpCount = 0; + private float Yref = 0; + + [Header("Jump Curve Parameters")] + public float a = 1.2f; + public float b = 1.4f; + public float c = 1; + + + + public PlayerJumpHandler(Player player) { + Player = player; + Transform = player.transform.Find("Visuals").Find("CharacterPos"); + player.DoUpdate += SetHeight; + } + + + private void SetHeight() { + if (!Active || Paused) return; + + if (!IsFreeFalling) { + var shift = (TimeElapsedNormalized < 0.5) ? 0 : AirTime; + var elapsed = Math.Abs(TimeElapsedNormalized * AirTime - shift) / (AirTime / 2); + var min = Math.Min(elapsed, 1); + var t = Math.Max(min, 0); + var u = 1 - t; + var h1 = 4 * u * u * u * t * a; + var h2 = 4 * u * u * t * t * b; + var h3 = 4 * u * t * t * t * c; + var h4 = t * t * t * t; + var h = (Height * (h1 + h2 + h3 + h4)) / JumpCount + GroundFakeZ + Yref; + CurrentFakeZ = h; + } else { + Yref -= (TimeElapsedNormalized - 1) * FreeFallSpeedPerSec; + if (Yref < 0) Yref = 0; + CurrentFakeZ = Yref; + } + + if (TimeLeftNormalized <= 0 && Yref == 0) + Stop(); + else + SetTransformYPos(CurrentFakeZ); + } + + public void Pause() { + if (!Active) return; + PauseTimeStamp = Time.time; + Paused = true; + } + + public void Unpause() { + if (!Active) return; + PauseTime = Time.time - PauseTimeStamp; + LastJump = Time.time - (AirTime * TimeLeftNormalized); + Paused = false; + } + + public void Start() { + if (JumpCount++ > 2) return; + if (Player.SkillInUse) return; + + if (JumpCount > 1) { + var pos = Player.transform.position; + pos.y += Transform.localPosition.y - 0.7f; + Player.VfxAirJumpPool.Get(pos); + } + + Yref = Transform.localPosition.y; + Active = true; + LastJump = Time.time; + PauseTime = 0; + } + + public void Stop() { + Active = false; + JumpCount = 0; + SetTransformYPos(0); + } + + public void SetTransformYPos(float yPos) { + var pos = Transform.localPosition; + pos.y = Math.Max(yPos, 0); + Transform.localPosition = pos; + Yref = Math.Min(Yref, pos.y); + } + +} diff --git a/Assets/Scripts/Runtime/Characters/Player/PlayerJumpHandler.cs.meta b/Assets/Scripts/Runtime/Characters/Player/PlayerJumpHandler.cs.meta new file mode 100644 index 0000000..4ca0683 --- /dev/null +++ b/Assets/Scripts/Runtime/Characters/Player/PlayerJumpHandler.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 42b80d38baed14b479b3247bbb96334d \ No newline at end of file diff --git a/Assets/Scripts/Runtime/Characters/Player/PlayerMainController.cs b/Assets/Scripts/Runtime/Characters/Player/PlayerMainController.cs index 3c20eaf..62864e7 100644 --- a/Assets/Scripts/Runtime/Characters/Player/PlayerMainController.cs +++ b/Assets/Scripts/Runtime/Characters/Player/PlayerMainController.cs @@ -54,6 +54,8 @@ public class Player : MonoBehaviour { [HideInInspector] public VfxHandlerBase VfxKineticSurgeHandler; [SerializeField] private GameObject VfxShockwave; [HideInInspector] public GameObjectPool VfxShockwavePool; + [SerializeField] private GameObject VfxAirJump; + [HideInInspector] public GameObjectPool VfxAirJumpPool; private BoxCollider2D[] BoxColliders; private bool LockMovement; @@ -63,14 +65,7 @@ public class Player : MonoBehaviour { private Vector2 MoveDirection = Vector2.zero; private Vector2 DashDirection = Vector2.zero; - public bool IsJumping { get; set; } - public float LastJumpTime { get; private set; } - - public bool ActionAfterJumpReady { - get { - return (!IsJumping || (Time.time - LastJumpTime > 0.03f)); - } - } + public PlayerJumpHandler Jump; public bool IsDashing { get; private set; } public float DashTime { get; private set; } public bool CanDash { get; private set; } = true; @@ -78,32 +73,38 @@ public class Player : MonoBehaviour { public bool SkillInUse = false; private enum Directions { Left, Right, Up, Down } + + void Awake() { Instance = this; + Jump = new PlayerJumpHandler(this); Builder = GetComponent(); VfxDashHandler = new VfxHandlerBase(VfxDash, 5, 5); VfxKineticSurgeHandler = new VfxHandlerBase(VfxKineticSurge, 5, 5); FighterClass = new MeleeFighterClass(this); VfxShockwavePool = new GameObjectPool(VfxShockwave, 5, 5); + VfxAirJumpPool = new GameObjectPool(VfxAirJump, 5, 5); BoxColliders = GetComponentsInChildren(); StaminaSliderHud.maxValue = StaminaMax; SetClass(1); } - + public Action DoUpdate; private void Update() { KeyPressActions(); GatherInput(); UpdatePlayerStatus(); UpdateActiveClass(); + DoUpdate?.Invoke(); } private void GatherInput() { if (LockMovement) return; MoveDirection.x = Input.GetAxisRaw("Horizontal"); - MoveDirection.y = Input.GetAxisRaw("Vertical") / 2; + MoveDirection.y = Input.GetAxisRaw("Vertical"); + MoveDirection = MoveDirection.NormalizedIso(); if (MoveDirection.x != 0 || MoveDirection.y != 0) PrevDirection = MoveDirection; } @@ -111,8 +112,8 @@ public class Player : MonoBehaviour { private void KeyPressActions() { if (Input.GetKeyDown(KeyCode.LeftShift) || Input.GetKeyDown(KeyCode.RightShift)) { DoDash(); - } else if (!IsJumping && Input.GetKeyDown(KeyCode.Space)) { - Jump(); + } else if (Input.GetKeyDown(KeyCode.Space)) { + Jump.Start(); } else if (Input.GetKeyDown(KeyCode.F1)) { SetClass(0); } else if (Input.GetKeyDown(KeyCode.F2)) { @@ -123,50 +124,27 @@ public class Player : MonoBehaviour { SetClass(3); } - if (Input.GetKeyDown(KeyCode.X)) ActiveClass.HandlePrimaryAttack(); else if (Input.GetKeyDown(KeyCode.C)) ActiveClass.HandleSecondaryAttack(); } private void DoDash() { if (!CanDash) return; - if (!ActionAfterJumpReady) return; + if (!Jump.IsNonBlocking) return; if (LockMovement) return; if (Stamina < 25) return; Stamina -= 25; CanDash = false; IsDashing = true; - DashDirection = MoveDirection.normalized; + DashDirection = MoveDirection; if (DashDirection == Vector2.zero) return; DashSpeed = DashSpeedInitial; - if (IsJumping) { + if (Jump.Active) { LockMovement = true; DashSpeed /= 2; } } - private void Jump(bool setJumpTime = true) { - if (SkillInUse) return; - IsJumping = true; - if (setJumpTime) LastJumpTime = Time.time; - foreach (var col in BoxColliders) - col.enabled = false; - if (CoroutineJumpReset != null) - StopCoroutine(CoroutineJumpReset); - CoroutineJumpReset = StartCoroutine(ResetJumpAfterDelay()); - MoveSpeedDampener = 2; - } - - public Coroutine CoroutineJumpReset { get; private set; } - private IEnumerator ResetJumpAfterDelay() { - yield return new WaitForSeconds(JumpDelay); - foreach (var col in BoxColliders) - col.enabled = true; - IsJumping = false; - LockMovement = false; - MoveSpeedDampener = 1; - } - private void SetClass(int classIdx) { Builder.SetBuildMode(classIdx == 3); ActiveClass = FighterClass; @@ -220,16 +198,18 @@ public class Player : MonoBehaviour { } private void MovementUpdate() { - var movement = (MoveDirection.normalized * MoveSpeed) / MoveSpeedDampener; + var movement = (MoveDirection * MoveSpeed) / MoveSpeedDampener; if (IsDashing) { - if (DashSpeed < (IsJumping ? 0.4f : 0.2f)) { + if (DashSpeed < (Jump.Active ? 0.4f : 0.2f)) { DashSpeed = 0; CanDash = true; IsDashing = false; + LockMovement = false; + Jump.Unpause(); } else if (DashSpeed > (movement.magnitude * 2)) { - if (IsJumping) Jump(false); + Jump.Pause(); movement = DashDirection * DashSpeed; - if (IsJumping) + if (Jump.Active) DashSpeed *= Mathf.Exp(-DashDecayRate * Time.deltaTime / 3); else DashSpeed *= Mathf.Exp(-DashDecayRate * Time.deltaTime); @@ -259,10 +239,9 @@ public class Player : MonoBehaviour { else if (Mathf.Abs(input.y) > 0) LastDirection = (input.y > 0) ? Direction.Up : Direction.Down; - if (SkillInUse) return ActiveClass.AnimationToPlay; - if (!IsJumping && input.sqrMagnitude < 0.01f) return "Idle"; - if (IsJumping) return "Jump"; + if (!Jump.Active && input.sqrMagnitude < 0.01f) return "Idle"; + if (Jump.Active) return "Jump2"; return "Run"; } diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index 53f4765..0cb1618 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -21,13 +21,13 @@ EditorUserSettings: value: 37434103 flags: 0 UnityEditor.ShaderGraph.Blackboard: - value: 18135939215a0a5004000b0e15254b524c030a3f2964643d120d1230e9e93a3fd6e826abbd3c3e302a07a37e0901373ae01e0008f707250d171df81a53a5405d41895ac825e0100ec20313c0d91cddccd3d0c7efcca9bd8d8c91f6a4a2a6b8afaca2fda9f9faa892e6edf38e9ccbddc18390ac86d4849395ea829f83f291cb918382d58697d7c5c6 + value: 18135939215a0a5004000b0e15254b524c030a3f2964643d120d1230e9e93a3fd6e826abbd2e2d293c4ead313b08042de6030a0afa240c0d020be94c4baf5e435d8715fa32c70d15d11612dacc11fee5d3c5d1fe9ab1b28a9089f6a4a2a6b9a1a6a9f7a8f8fcae8ce8a2c182a6d8c2869bd1f5dc8e9c9b97ea9c819ffcca90898d86d598899ac5 flags: 0 UnityEditor.ShaderGraph.FloatingWindowsLayout2: value: 181344140043005e1a220d3b1f364b524c0c5a27130c293326201334cee5322ca0bd30e8eb293a707b0fd0180b3d0a36fc0d3d04e649500d1002ee0b5dbd1d2c27c00ad113cb1e10e41f1addc80993b9859884a69ae6d8f0d1cda9e8fbfefaf9f9dea3fdb9ade882f0ffb0e1e380cafbf2c3adc18e9cd285a2908b81e9829c808a85d6818dd78a888ddef7d8eed2bee6c9f3f3c7dbf6caf8cecfceeb38ebfd3837353fa7a1a5 flags: 0 UnityEditor.ShaderGraph.InspectorWindow: - value: 18135939215a0a5004000b0e15254b524c030a3f2964643d120d1230e9e93a3fd6e826abbd2e2d293c4ead313b08042de6030a0afa240c0d020be94c4baf5e435d8715fa32c70d15d11612dacc11fee5d3c5d1fe9ab1b58e8991f3a1a7a3baaba0a1f0a3fff1a88ce8a2c182a6d8c2869bd1f5dc8e9c9d9fea9c8785e88587858d8fd1878dd78e979b94e2d7f4c4f6eac0f2f7c5c4f7c0f3c5ccc4e333aeb2 + value: 18135939215a0a5004000b0e15254b524c030a3f2964643d120d1230e9e93a3fd6e826abbd3c3e302a07a37e0901373ae01e0008f707250d171df81a53a5405d41895ac825e0100ec20313c0d91cddccd3d0c7efcca9bd8a8888eea1a7a3bdaca6a4f5aef2fda594e6edf38e9ccbddc18390ac86d4849393e2829f85e88584868f82dc8288d3888d95cfb9cff8c6f3f5ddf2f7c5c6f2cdfbcfcdc8e137e6b27d flags: 0 vcSharedLogLevel: value: 0d5e400f0650 diff --git a/UserSettings/Search.settings b/UserSettings/Search.settings index a97de3c..dcebba9 100644 --- a/UserSettings/Search.settings +++ b/UserSettings/Search.settings @@ -9,7 +9,7 @@ onBoardingDoNotAskAgain = true showPackageIndexes = false showStatusBar = false scopes = { - "last_search.66F56946" = "ui" + "last_search.66F56946" = "" "OpenInspectorPreview.66F56946" = "0" "currentGroup.66F56946" = "menu" "picker_window_position_offset.075BCD15" = "127.3334;263.3333;320;550"