From c2b93486c574b622eb83ccc82e9e9da1f6c93d2c Mon Sep 17 00:00:00 2001 From: 13659 <1365957941@qq.com> Date: Mon, 25 May 2026 17:00:17 +0800 Subject: [PATCH] feat: Player script updates - ground check, flip, animations, and study notes --- Assets/Animations.meta | 8 + Assets/Animations/Player.controller | 159 ++ Assets/Animations/Player.controller.meta | 8 + Assets/Animations/PlayerMove.anim | 93 + Assets/Animations/PlayerMove.anim.meta | 8 + Assets/Animations/playerIdle.anim | 87 + Assets/Animations/playerIdle.anim.meta | 8 + Assets/Graphics.meta | 8 + Assets/Graphics/Player_Graphics.png.meta | 2744 ++++++++++++++++++++++ Assets/Player.cs | 91 +- Assets/Scenes/SampleScene.unity | 259 +- Assets/_Recovery.meta | 8 + Assets/_Recovery/0.unity | 687 ++++++ Assets/_Recovery/0.unity.meta | 7 + ProjectSettings/TagManager.asset | 6 +- Q&A.md | 175 ++ StudyNotes.md | 785 +++++++ 17 files changed, 5047 insertions(+), 94 deletions(-) create mode 100644 Assets/Animations.meta create mode 100644 Assets/Animations/Player.controller create mode 100644 Assets/Animations/Player.controller.meta create mode 100644 Assets/Animations/PlayerMove.anim create mode 100644 Assets/Animations/PlayerMove.anim.meta create mode 100644 Assets/Animations/playerIdle.anim create mode 100644 Assets/Animations/playerIdle.anim.meta create mode 100644 Assets/Graphics.meta create mode 100644 Assets/Graphics/Player_Graphics.png.meta create mode 100644 Assets/_Recovery.meta create mode 100644 Assets/_Recovery/0.unity create mode 100644 Assets/_Recovery/0.unity.meta create mode 100644 Q&A.md create mode 100644 StudyNotes.md diff --git a/Assets/Animations.meta b/Assets/Animations.meta new file mode 100644 index 0000000..9f6a941 --- /dev/null +++ b/Assets/Animations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0bfc731052abef54fb83431c06faec18 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animations/Player.controller b/Assets/Animations/Player.controller new file mode 100644 index 0000000..e65efc1 --- /dev/null +++ b/Assets/Animations/Player.controller @@ -0,0 +1,159 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1107 &-7853685596089614426 +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: -2999887273125739820} + m_Position: {x: 320, y: 40, z: 0} + - serializedVersion: 1 + m_State: {fileID: 8541810184871255671} + m_Position: {x: 315, y: 175, 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: 610, y: 110, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -2999887273125739820} +--- !u!1102 &-2999887273125739820 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: playerIdle + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -1263164013022993944} + 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: fe96eea6ebc2c8b4dbe787f4b59ef43f, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &-1263164013022993944 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: isMoving + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 8541810184871255671} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0.5833334 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Player + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: isMoving + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: -7853685596089614426} + 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} +--- !u!1101 &7343199574911539791 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: isMoving + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -2999887273125739820} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0.625 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &8541810184871255671 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: PlayerMove + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 7343199574911539791} + 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: ac4d453786085a145949201d8c33f0e0, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Assets/Animations/Player.controller.meta b/Assets/Animations/Player.controller.meta new file mode 100644 index 0000000..f786f3c --- /dev/null +++ b/Assets/Animations/Player.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4cd7b9f753545ba40a639b07336ad421 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animations/PlayerMove.anim b/Assets/Animations/PlayerMove.anim new file mode 100644 index 0000000..774a694 --- /dev/null +++ b/Assets/Animations/PlayerMove.anim @@ -0,0 +1,93 @@ +%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: PlayerMove + 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: 1810491922, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - time: 0.083333336 + value: {fileID: -723117680, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - time: 0.16666667 + value: {fileID: 2013422008, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - time: 0.25 + value: {fileID: -688480063, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - time: 0.33333334 + value: {fileID: 1396573066, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - time: 0.41666666 + value: {fileID: -171298805, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - time: 0.5 + value: {fileID: 911255850, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - time: 0.5833333 + value: {fileID: -1133639880, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 12 + 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: 1810491922, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - {fileID: -723117680, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - {fileID: 2013422008, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - {fileID: -688480063, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - {fileID: 1396573066, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - {fileID: -171298805, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - {fileID: 911255850, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - {fileID: -1133639880, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.6666666 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + 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/Animations/PlayerMove.anim.meta b/Assets/Animations/PlayerMove.anim.meta new file mode 100644 index 0000000..a588974 --- /dev/null +++ b/Assets/Animations/PlayerMove.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac4d453786085a145949201d8c33f0e0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animations/playerIdle.anim b/Assets/Animations/playerIdle.anim new file mode 100644 index 0000000..48a46a3 --- /dev/null +++ b/Assets/Animations/playerIdle.anim @@ -0,0 +1,87 @@ +%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: playerIdle + 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: -1750721404, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - time: 0.1 + value: {fileID: 1117037913, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - time: 0.2 + value: {fileID: 684117881, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - time: 0.3 + value: {fileID: -284851867, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - time: 0.4 + value: {fileID: 1153121478, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - time: 0.5 + value: {fileID: -816975202, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 10 + 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: -1750721404, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - {fileID: 1117037913, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - {fileID: 684117881, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - {fileID: -284851867, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - {fileID: 1153121478, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + - {fileID: -816975202, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.6 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + 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/Animations/playerIdle.anim.meta b/Assets/Animations/playerIdle.anim.meta new file mode 100644 index 0000000..e50e347 --- /dev/null +++ b/Assets/Animations/playerIdle.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe96eea6ebc2c8b4dbe787f4b59ef43f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Graphics.meta b/Assets/Graphics.meta new file mode 100644 index 0000000..02e0f01 --- /dev/null +++ b/Assets/Graphics.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d94a2887da7020e48bd213ae515c5bb4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Graphics/Player_Graphics.png.meta b/Assets/Graphics/Player_Graphics.png.meta new file mode 100644 index 0000000..6221c11 --- /dev/null +++ b/Assets/Graphics/Player_Graphics.png.meta @@ -0,0 +1,2744 @@ +fileFormatVersion: 2 +guid: 2a192e342a6409b4d9677ef04a238b79 +TextureImporter: + internalIDToNameTable: + - first: + 213: -3318188226485093758 + second: Warrior_Sheet-Effect_0 + - first: + 213: -1938354968663525734 + second: Warrior_Sheet-Effect_1 + - first: + 213: -4486162353907066099 + second: Warrior_Sheet-Effect_2 + - first: + 213: -7105675749794256429 + second: Warrior_Sheet-Effect_3 + - first: + 213: 932576740597027765 + second: Warrior_Sheet-Effect_4 + - first: + 213: 8053934741035486310 + second: Warrior_Sheet-Effect_5 + - first: + 213: 4312510042007804440 + second: Warrior_Sheet-Effect_6 + - first: + 213: -3637831218265681369 + second: Warrior_Sheet-Effect_7 + - first: + 213: 7890055846987212836 + second: Warrior_Sheet-Effect_8 + - first: + 213: -1755831512471263806 + second: Warrior_Sheet-Effect_9 + - first: + 213: -7157502479376193569 + second: Warrior_Sheet-Effect_10 + - first: + 213: -6179113146597259875 + second: Warrior_Sheet-Effect_11 + - first: + 213: -7195227389596926799 + second: Warrior_Sheet-Effect_12 + - first: + 213: -7083850147136336687 + second: Warrior_Sheet-Effect_13 + - first: + 213: -7879541775824577086 + second: Warrior_Sheet-Effect_14 + - first: + 213: -6442761953431332421 + second: Warrior_Sheet-Effect_15 + - first: + 213: -7823500323640422531 + second: Warrior_Sheet-Effect_16 + - first: + 213: 3272844186751121127 + second: Warrior_Sheet-Effect_17 + - first: + 213: 8629003983396144442 + second: Warrior_Sheet-Effect_18 + - first: + 213: -6211648682532063752 + second: Warrior_Sheet-Effect_19 + - first: + 213: 4804923502247703499 + second: Warrior_Sheet-Effect_20 + - first: + 213: -6253208296904073923 + second: Warrior_Sheet-Effect_21 + - first: + 213: -381468241496348146 + second: Warrior_Sheet-Effect_22 + - first: + 213: -2164224423321271568 + second: Warrior_Sheet-Effect_23 + - first: + 213: 7378919880078719499 + second: Warrior_Sheet-Effect_24 + - first: + 213: -50406204238961237 + second: Warrior_Sheet-Effect_25 + - first: + 213: 2833012263988642564 + second: Warrior_Sheet-Effect_26 + - first: + 213: 1619122817114066791 + second: Warrior_Sheet-Effect_27 + - first: + 213: -3728085103066422436 + second: Warrior_Sheet-Effect_28 + - first: + 213: 5309330118571133426 + second: Warrior_Sheet-Effect_29 + - first: + 213: 2138419889203400846 + second: Warrior_Sheet-Effect_30 + - first: + 213: -3793288683446833867 + second: Warrior_Sheet-Effect_31 + - first: + 213: 7809884292531708377 + second: Warrior_Sheet-Effect_32 + - first: + 213: 8758733799639075308 + second: Warrior_Sheet-Effect_33 + - first: + 213: 4273360486593703493 + second: Warrior_Sheet-Effect_34 + - first: + 213: 8740081516789230483 + second: Warrior_Sheet-Effect_35 + - first: + 213: 4245071895355107723 + second: Warrior_Sheet-Effect_36 + - first: + 213: 8207571220096118977 + second: Warrior_Sheet-Effect_37 + - first: + 213: 7910466545735013580 + second: Warrior_Sheet-Effect_38 + - first: + 213: -4360246032673291897 + second: Warrior_Sheet-Effect_39 + - first: + 213: -6130774247032492815 + second: Warrior_Sheet-Effect_40 + - first: + 213: -7784280053648753441 + second: Warrior_Sheet-Effect_41 + - first: + 213: -8105224185696963899 + second: Warrior_Sheet-Effect_42 + - first: + 213: 565109345717033213 + second: Warrior_Sheet-Effect_43 + - first: + 213: 3578844115799939244 + second: Warrior_Sheet-Effect_44 + - first: + 213: -8346973252730123848 + second: Warrior_Sheet-Effect_45 + - first: + 213: 3675700599212663255 + second: Warrior_Sheet-Effect_46 + - first: + 213: -6199907869733816761 + second: Warrior_Sheet-Effect_47 + - first: + 213: -9068822172998705990 + second: Warrior_Sheet-Effect_48 + - first: + 213: 4778756267546337206 + second: Warrior_Sheet-Effect_49 + - first: + 213: -5417263232604538632 + second: Warrior_Sheet-Effect_50 + - first: + 213: -8179423753346160949 + second: Warrior_Sheet-Effect_51 + - first: + 213: -1605837713619785204 + second: Warrior_Sheet-Effect_52 + - first: + 213: 8858915403469927737 + second: Warrior_Sheet-Effect_53 + - first: + 213: 5335032761891035287 + second: Warrior_Sheet-Effect_54 + - first: + 213: 8562263981820643917 + second: Warrior_Sheet-Effect_55 + - first: + 213: 7739141928638578783 + second: Warrior_Sheet-Effect_56 + - first: + 213: -1765949524758486658 + second: Warrior_Sheet-Effect_57 + - first: + 213: -1406694122392401829 + second: Warrior_Sheet-Effect_58 + - first: + 213: 3914160388638673933 + second: Warrior_Sheet-Effect_59 + - first: + 213: 709901728315876072 + second: Warrior_Sheet-Effect_60 + - first: + 213: -5647377392427310024 + second: Warrior_Sheet-Effect_61 + - first: + 213: -5110843521143403644 + second: Warrior_Sheet-Effect_62 + - first: + 213: -8626763743991069669 + second: Warrior_Sheet-Effect_63 + - first: + 213: -8669300221853394086 + second: Warrior_Sheet-Effect_64 + - first: + 213: -8606690382453196554 + second: Warrior_Sheet-Effect_65 + - first: + 213: -1003838945947052602 + second: Warrior_Sheet-Effect_66 + - first: + 213: 1786230212584650817 + second: Warrior_Sheet-Effect_67 + - first: + 213: 2896272659956946786 + second: Warrior_Sheet-Effect_68 + - first: + 213: 2127461698910248042 + second: Warrior_Sheet-Effect_69 + - first: + 213: 8874842850510428824 + second: Warrior_Sheet-Effect_70 + - first: + 213: -1175057978942713942 + second: Warrior_Sheet-Effect_71 + - first: + 213: 8396084745013482390 + second: Warrior_Sheet-Effect_72 + - first: + 213: -5219189033981844993 + second: Warrior_Sheet-Effect_73 + - first: + 213: 8048201136183370311 + second: Warrior_Sheet-Effect_74 + - first: + 213: -5008098951225157325 + second: Warrior_Sheet-Effect_75 + - first: + 213: 3500951761227251082 + second: Warrior_Sheet-Effect_76 + - first: + 213: -848416997838638187 + second: Warrior_Sheet-Effect_77 + - first: + 213: -1594377132886445991 + second: Warrior_Sheet-Effect_78 + - first: + 213: -7939720171757009327 + second: Warrior_Sheet-Effect_79 + - first: + 213: 4278741268874708782 + second: Warrior_Sheet-Effect_80 + - first: + 213: -5551026827497223419 + second: Warrior_Sheet-Effect_81 + - first: + 213: -2437237654950474820 + second: Warrior_Sheet-Effect_82 + - first: + 213: -5853263684127566195 + second: Warrior_Sheet-Effect_83 + - first: + 213: 806391716420303315 + second: Warrior_Sheet-Effect_84 + - first: + 213: -7703501868747715773 + second: Warrior_Sheet-Effect_85 + - first: + 213: -5742998253431553049 + second: Warrior_Sheet-Effect_86 + - first: + 213: 1550331120443448429 + second: Warrior_Sheet-Effect_87 + - first: + 213: -3380132617870049673 + second: Warrior_Sheet-Effect_88 + - first: + 213: -6656010539272679822 + second: Warrior_Sheet-Effect_89 + - first: + 213: -6761883565659206456 + second: Warrior_Sheet-Effect_90 + - first: + 213: -2106872485169043283 + second: Warrior_Sheet-Effect_91 + - first: + 213: -5691269341329648135 + second: Warrior_Sheet-Effect_92 + - first: + 213: -8491356359149837760 + second: Warrior_Sheet-Effect_93 + - first: + 213: -4479905760731915366 + second: Warrior_Sheet-Effect_94 + - first: + 213: -7781806043594523482 + second: Warrior_Sheet-Effect_95 + - first: + 213: -2493374651010981141 + second: Warrior_Sheet-Effect_96 + - first: + 213: -7685447711378399537 + second: Warrior_Sheet-Effect_97 + - first: + 213: 787512443710130017 + second: Warrior_Sheet-Effect_98 + - first: + 213: 1667360231840587918 + second: Warrior_Sheet-Effect_99 + - first: + 213: -8135003661806278683 + second: Warrior_Sheet-Effect_100 + - first: + 213: 115473478628274326 + second: Warrior_Sheet-Effect_101 + - first: + 213: -5072038167401593141 + second: Warrior_Sheet-Effect_102 + - first: + 213: 1209288620382777180 + second: Warrior_Sheet-Effect_103 + - first: + 213: 6288422297757579082 + second: Warrior_Sheet-Effect_104 + - first: + 213: 8763952654032722262 + second: Warrior_Sheet-Effect_105 + - first: + 213: 7710581811681040085 + second: Warrior_Sheet-Effect_106 + - first: + 213: -4208995097174423316 + second: Warrior_Sheet-Effect_107 + - first: + 213: 3452050695099243210 + second: Warrior_Sheet-Effect_108 + - first: + 213: 2129506922609220151 + second: Warrior_Sheet-Effect_109 + - first: + 213: -8959543402948288788 + second: Warrior_Sheet-Effect_110 + - first: + 213: -3871296790637727015 + second: Warrior_Sheet-Effect_111 + - first: + 213: 486981873210602661 + second: Warrior_Sheet-Effect_112 + - first: + 213: 5596750852176582002 + second: Warrior_Sheet-Effect_113 + - first: + 213: -147368431713602355 + second: Warrior_Sheet-Effect_114 + - first: + 213: 6509321921613263128 + second: Warrior_Sheet-Effect_115 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 16 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Player_Graphics_0 + rect: + serializedVersion: 2 + x: 0 + y: 704 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 170b11f818ebb934aaa4e4fba6091bff + internalID: -1750721404 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_1 + rect: + serializedVersion: 2 + x: 69 + y: 704 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: ea534709bcca4244db8964bad2abdb36 + internalID: 1117037913 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_2 + rect: + serializedVersion: 2 + x: 138 + y: 704 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 61383fb2684393c429607608b54dd768 + internalID: 684117881 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_3 + rect: + serializedVersion: 2 + x: 207 + y: 704 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: f86cc04932200fa47af39805ef6776d2 + internalID: -284851867 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_4 + rect: + serializedVersion: 2 + x: 276 + y: 704 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: bd5003c7eacf58547b4380da401d3f30 + internalID: 1153121478 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_5 + rect: + serializedVersion: 2 + x: 345 + y: 704 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: e38e870b013ca284982def315d7d404d + internalID: -816975202 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_6 + rect: + serializedVersion: 2 + x: 0 + y: 660 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: c731c99707ca8714082709d2e05ab871 + internalID: 1810491922 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_7 + rect: + serializedVersion: 2 + x: 69 + y: 660 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 37d08376344c188419c18cbb18423e3d + internalID: -723117680 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_8 + rect: + serializedVersion: 2 + x: 138 + y: 660 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 932d96c99249063458d76e42db143ab5 + internalID: 2013422008 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_9 + rect: + serializedVersion: 2 + x: 207 + y: 660 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 7dc696b5c4758464eae4cb840964317a + internalID: -688480063 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_10 + rect: + serializedVersion: 2 + x: 276 + y: 660 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: a22e431377a03d14a8915aff59156084 + internalID: 1396573066 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_11 + rect: + serializedVersion: 2 + x: 345 + y: 660 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 738941b29087df94fac8beb3afaa5736 + internalID: -171298805 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_12 + rect: + serializedVersion: 2 + x: 0 + y: 616 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: d467ad2909297a44188b4b10e761d6df + internalID: 911255850 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_13 + rect: + serializedVersion: 2 + x: 69 + y: 616 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: df29539fd45c8f24f84105097ba3f3e8 + internalID: -1133639880 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_14 + rect: + serializedVersion: 2 + x: 138 + y: 616 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 80cc5640669d2fe4a98ae39f8ed27fc5 + internalID: -1059185708 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_15 + rect: + serializedVersion: 2 + x: 207 + y: 616 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 5fb210b67578bf34399a12f800ed8545 + internalID: 558846297 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_16 + rect: + serializedVersion: 2 + x: 276 + y: 616 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 48f5e10ef5e87ad4d81c2cede965aeaa + internalID: 752029924 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_17 + rect: + serializedVersion: 2 + x: 345 + y: 616 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 710de52f647b1fd47ba2f8650c86c6bb + internalID: 184008166 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_18 + rect: + serializedVersion: 2 + x: 0 + y: 572 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: ab94a79f93f3f0346955c4d5a7da7b65 + internalID: 820566783 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_19 + rect: + serializedVersion: 2 + x: 69 + y: 572 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: eb11900ab39897f4eb76a86118f47725 + internalID: 590827802 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_20 + rect: + serializedVersion: 2 + x: 138 + y: 572 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: feeb943e01c436446ab5af5d764aa760 + internalID: -1161772646 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_21 + rect: + serializedVersion: 2 + x: 207 + y: 572 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: e01c1ae778837394a89f05e4ee6b32b5 + internalID: 180173413 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_22 + rect: + serializedVersion: 2 + x: 276 + y: 572 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 0c2c21cfacc0b0a44bb4d1bba921fe63 + internalID: 32573988 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_23 + rect: + serializedVersion: 2 + x: 345 + y: 572 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: db62e2a0f8ded004dacefcf28a1e80ad + internalID: 1171777727 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_24 + rect: + serializedVersion: 2 + x: 0 + y: 528 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 77e9f97ad3e377f4b89bacd75ed66dfe + internalID: -2085539244 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_25 + rect: + serializedVersion: 2 + x: 69 + y: 528 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 82bdfab1bd334e04abe7072e77aaaedb + internalID: 1188662238 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_26 + rect: + serializedVersion: 2 + x: 138 + y: 528 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 582582794ca375a409cb2a6862ff8b26 + internalID: -1366575301 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_27 + rect: + serializedVersion: 2 + x: 207 + y: 528 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: b653856235a13f34b992c3ed2b8df501 + internalID: 701782297 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_28 + rect: + serializedVersion: 2 + x: 276 + y: 528 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: f9fc8506a424d6e46bd9354d9db0c5d0 + internalID: -449449266 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_29 + rect: + serializedVersion: 2 + x: 345 + y: 528 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: fed6daa23e0988546a84b161b6675274 + internalID: 2001027269 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_30 + rect: + serializedVersion: 2 + x: 0 + y: 484 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 463ab45ee20a56948beb667f6bfb1e79 + internalID: 80651380 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_31 + rect: + serializedVersion: 2 + x: 69 + y: 484 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 7a65d30473bfe684381d2c538407f1d7 + internalID: -1183880293 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_32 + rect: + serializedVersion: 2 + x: 138 + y: 484 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: df72f5b1fcba2cd449d1473ea69f92b2 + internalID: -1963400728 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_33 + rect: + serializedVersion: 2 + x: 207 + y: 484 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: d8befd5c36aec674da6163cb6320b00e + internalID: -1431006571 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_34 + rect: + serializedVersion: 2 + x: 276 + y: 484 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: b1b8448c69988754c9c8b4aa3912764c + internalID: -889151098 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_35 + rect: + serializedVersion: 2 + x: 345 + y: 484 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 8a27e397e7713ff40ac3118d29529458 + internalID: 434461652 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_36 + rect: + serializedVersion: 2 + x: 0 + y: 440 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: a776fd47814a23940997ee17973a044c + internalID: 2017246067 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_37 + rect: + serializedVersion: 2 + x: 69 + y: 440 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 9a212a510823c7a4fa63314de16c8901 + internalID: 1421146040 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_38 + rect: + serializedVersion: 2 + x: 138 + y: 440 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 68d3273ee7e358044b176d26e006972e + internalID: -791864198 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_39 + rect: + serializedVersion: 2 + x: 207 + y: 440 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: a025885b327e98147b7a5f9a17fba87b + internalID: 909598499 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_40 + rect: + serializedVersion: 2 + x: 276 + y: 440 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: cb36810c966bfc84e9b163ce4151c9a7 + internalID: -1973618393 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_41 + rect: + serializedVersion: 2 + x: 345 + y: 440 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 470cfd22ce4f1cc4591d91e73ac48983 + internalID: 1486326522 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_42 + rect: + serializedVersion: 2 + x: 0 + y: 396 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 6090d2df33197e4499f1ee00f882e452 + internalID: 284068559 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_43 + rect: + serializedVersion: 2 + x: 69 + y: 396 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: a7fb58b1e28a3654991a1c50b6054131 + internalID: 2143798682 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_44 + rect: + serializedVersion: 2 + x: 138 + y: 396 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 04c40b43d2a51734ba592ad712249a01 + internalID: 798329883 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_45 + rect: + serializedVersion: 2 + x: 207 + y: 396 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 8ed1b0fe1af4a06438d79e20a6db617d + internalID: -347299788 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_46 + rect: + serializedVersion: 2 + x: 276 + y: 396 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 870b0ea372e6970438a3d16e4276500c + internalID: -270005676 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_47 + rect: + serializedVersion: 2 + x: 345 + y: 396 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: d7b2c1580ed91be44abdf2d690322e0c + internalID: -963690940 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_48 + rect: + serializedVersion: 2 + x: 0 + y: 352 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: f3fa1a34ce33db04e98eb3657f8b4b99 + internalID: -1648917730 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_49 + rect: + serializedVersion: 2 + x: 69 + y: 352 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 7647d43eadfd78c478080b703a5434d2 + internalID: -16252607 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_50 + rect: + serializedVersion: 2 + x: 138 + y: 352 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 69aa4e75186141c43a5f8a1d1ea935df + internalID: -764936431 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_51 + rect: + serializedVersion: 2 + x: 207 + y: 352 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 7230379234178024199ac1d76db0a941 + internalID: -1786884637 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_52 + rect: + serializedVersion: 2 + x: 276 + y: 352 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 33dba32585d08d1489420fc31d888b97 + internalID: 147411982 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_53 + rect: + serializedVersion: 2 + x: 345 + y: 352 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: b79fc892d0d5e5f48b9f1e4b156f0283 + internalID: 1469451611 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_54 + rect: + serializedVersion: 2 + x: 0 + y: 308 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: e3a1abf92593cc14793e17fe0a881974 + internalID: 1703204855 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_55 + rect: + serializedVersion: 2 + x: 69 + y: 308 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 52e4867d66f3b2d49839a4b001c1cd79 + internalID: -1967282118 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_56 + rect: + serializedVersion: 2 + x: 138 + y: 308 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: e691ea7d78142ec4c84eaf10a4d209db + internalID: -141105833 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_57 + rect: + serializedVersion: 2 + x: 207 + y: 308 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: d8d1c7140409f7a40aecd80ca85b6c49 + internalID: -97635205 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_58 + rect: + serializedVersion: 2 + x: 276 + y: 308 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 324d4884c5c698e40848845496137459 + internalID: 1602374458 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_59 + rect: + serializedVersion: 2 + x: 345 + y: 308 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 3001a32d293896a4dae00feb8e1b96e0 + internalID: -295716604 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_60 + rect: + serializedVersion: 2 + x: 0 + y: 264 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: e5a7dfc9c26cdfd489a004003b65a00a + internalID: 1795275905 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_61 + rect: + serializedVersion: 2 + x: 69 + y: 264 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: b18597d898bab424b91f2a74085d472c + internalID: 2065594881 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_62 + rect: + serializedVersion: 2 + x: 138 + y: 264 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 193b4840e7166e24aa78f83375d7a717 + internalID: 184442718 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_63 + rect: + serializedVersion: 2 + x: 207 + y: 264 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 2b19b48406af56f419b6f7fa22d59a6c + internalID: -933220875 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_64 + rect: + serializedVersion: 2 + x: 276 + y: 264 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 2bed7426d62126640b273e30f714ca55 + internalID: -1560870032 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_65 + rect: + serializedVersion: 2 + x: 345 + y: 264 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: c30e586632374ae48a1d2265e7e4c158 + internalID: -1295918799 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_66 + rect: + serializedVersion: 2 + x: 0 + y: 220 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 351379dd994d75347b8a4c0bbfd71513 + internalID: 1646574870 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_67 + rect: + serializedVersion: 2 + x: 69 + y: 220 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 41b7def59a156514f9c4a21018e72710 + internalID: 1046154335 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_68 + rect: + serializedVersion: 2 + x: 138 + y: 220 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 7a636dc9f2d294c4a91b9b1289dfb586 + internalID: 1114147934 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_69 + rect: + serializedVersion: 2 + x: 207 + y: 220 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: d5bb0cc6dc6aff24da1754de1e49b714 + internalID: 1087113556 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_70 + rect: + serializedVersion: 2 + x: 276 + y: 220 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: edd8578e5f875ca46bb996d796b88c10 + internalID: -1043010748 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_71 + rect: + serializedVersion: 2 + x: 345 + y: 220 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 0ecc7c30d90ae524ba1de9e3b6c779b7 + internalID: 1660914977 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_72 + rect: + serializedVersion: 2 + x: 0 + y: 176 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 03834ae5713e1184b93abc88b562debf + internalID: -852126981 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_73 + rect: + serializedVersion: 2 + x: 69 + y: 176 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 85c35a08e3c8562418e4a649b6d3425c + internalID: -622541784 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_74 + rect: + serializedVersion: 2 + x: 138 + y: 176 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: cddab2e2218bf4047921287238ea55a4 + internalID: 780800254 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_75 + rect: + serializedVersion: 2 + x: 207 + y: 176 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: b712b266059881049b1ab26e26ad1796 + internalID: -378549456 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_76 + rect: + serializedVersion: 2 + x: 276 + y: 176 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 7799e5320f611104c9e4c12f6242cbad + internalID: 1663342945 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_77 + rect: + serializedVersion: 2 + x: 345 + y: 176 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 1c82e705acc8f59498ee82b068ce3c23 + internalID: -2122265812 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_78 + rect: + serializedVersion: 2 + x: 0 + y: 132 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 7d3a49bc316533940944de1fb7e2bafb + internalID: 1322962067 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_79 + rect: + serializedVersion: 2 + x: 69 + y: 132 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 452d9c9c3cbec38448a5c1fe214c0ff1 + internalID: 2118243265 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_80 + rect: + serializedVersion: 2 + x: 138 + y: 132 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: d6edd853be3a538469daf7edce0d69ae + internalID: 1567180816 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_81 + rect: + serializedVersion: 2 + x: 207 + y: 132 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: f479e03ea055af147b8a110e26f64ebb + internalID: 332236728 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_82 + rect: + serializedVersion: 2 + x: 276 + y: 132 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 24ba32e0fda16654192485ab2cb6ac4c + internalID: -1678372270 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_83 + rect: + serializedVersion: 2 + x: 345 + y: 132 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: e19d844f04b9b6547b6313081f996e4a + internalID: 1930878484 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_84 + rect: + serializedVersion: 2 + x: 0 + y: 88 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: dfd8521fa23f6504a9edb4c86a2c7737 + internalID: 505193807 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_85 + rect: + serializedVersion: 2 + x: 69 + y: 88 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: c9cbe222411a56245aefc8e34fd7d79d + internalID: 1071510893 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_86 + rect: + serializedVersion: 2 + x: 138 + y: 88 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 8f7546f3ad2bc9441aab682a7b331d5e + internalID: -1668542072 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_87 + rect: + serializedVersion: 2 + x: 207 + y: 88 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 1fcca1e59ad440e46a59e186e062572b + internalID: 855385908 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_88 + rect: + serializedVersion: 2 + x: 276 + y: 88 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: af0eb7bfc2d2fb144bbe53022103f098 + internalID: -1300519912 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_89 + rect: + serializedVersion: 2 + x: 345 + y: 88 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: f26641c97f63ad24baa622bce6640220 + internalID: 1551369741 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_90 + rect: + serializedVersion: 2 + x: 0 + y: 44 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 55fc79b5288d13f45a8b0091559a842a + internalID: -2045663041 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_91 + rect: + serializedVersion: 2 + x: 69 + y: 44 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 94ec1ebab7ead7b4e933d905b95ef3e0 + internalID: 517161683 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_92 + rect: + serializedVersion: 2 + x: 138 + y: 44 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 843a906982e0352468e2de7218f33c24 + internalID: -140065073 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_93 + rect: + serializedVersion: 2 + x: 207 + y: 44 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 18396d278186d5d4fb3783af98506c10 + internalID: 1304353503 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_94 + rect: + serializedVersion: 2 + x: 276 + y: 44 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: de7bfc1b8f8c9ed438f90bf88bf096c0 + internalID: -2099094754 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_95 + rect: + serializedVersion: 2 + x: 345 + y: 44 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 94fa488dea0b3594596332ebc0a1f2ae + internalID: -1468081842 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_96 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 113cfff3985e57e4bab2fa4c735d359a + internalID: 854581780 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_97 + rect: + serializedVersion: 2 + x: 69 + y: 0 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 2323dc91d9f2ac34c8c07199f939fa02 + internalID: 194286820 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Player_Graphics_98 + rect: + serializedVersion: 2 + x: 138 + y: 0 + width: 69 + height: 44 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 24d8ffccf39f18a46b729c1fe2e982a6 + internalID: 1932403333 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: b8aefe51c1b9ae64f81b1d9add4866e0 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: + - key: SpriteEditor.SliceSettings + value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":69.0,"y":44.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}' + nameFileIdTable: + Player_Graphics_0: -1750721404 + Player_Graphics_1: 1117037913 + Player_Graphics_10: 1396573066 + Player_Graphics_11: -171298805 + Player_Graphics_12: 911255850 + Player_Graphics_13: -1133639880 + Player_Graphics_14: -1059185708 + Player_Graphics_15: 558846297 + Player_Graphics_16: 752029924 + Player_Graphics_17: 184008166 + Player_Graphics_18: 820566783 + Player_Graphics_19: 590827802 + Player_Graphics_2: 684117881 + Player_Graphics_20: -1161772646 + Player_Graphics_21: 180173413 + Player_Graphics_22: 32573988 + Player_Graphics_23: 1171777727 + Player_Graphics_24: -2085539244 + Player_Graphics_25: 1188662238 + Player_Graphics_26: -1366575301 + Player_Graphics_27: 701782297 + Player_Graphics_28: -449449266 + Player_Graphics_29: 2001027269 + Player_Graphics_3: -284851867 + Player_Graphics_30: 80651380 + Player_Graphics_31: -1183880293 + Player_Graphics_32: -1963400728 + Player_Graphics_33: -1431006571 + Player_Graphics_34: -889151098 + Player_Graphics_35: 434461652 + Player_Graphics_36: 2017246067 + Player_Graphics_37: 1421146040 + Player_Graphics_38: -791864198 + Player_Graphics_39: 909598499 + Player_Graphics_4: 1153121478 + Player_Graphics_40: -1973618393 + Player_Graphics_41: 1486326522 + Player_Graphics_42: 284068559 + Player_Graphics_43: 2143798682 + Player_Graphics_44: 798329883 + Player_Graphics_45: -347299788 + Player_Graphics_46: -270005676 + Player_Graphics_47: -963690940 + Player_Graphics_48: -1648917730 + Player_Graphics_49: -16252607 + Player_Graphics_5: -816975202 + Player_Graphics_50: -764936431 + Player_Graphics_51: -1786884637 + Player_Graphics_52: 147411982 + Player_Graphics_53: 1469451611 + Player_Graphics_54: 1703204855 + Player_Graphics_55: -1967282118 + Player_Graphics_56: -141105833 + Player_Graphics_57: -97635205 + Player_Graphics_58: 1602374458 + Player_Graphics_59: -295716604 + Player_Graphics_6: 1810491922 + Player_Graphics_60: 1795275905 + Player_Graphics_61: 2065594881 + Player_Graphics_62: 184442718 + Player_Graphics_63: -933220875 + Player_Graphics_64: -1560870032 + Player_Graphics_65: -1295918799 + Player_Graphics_66: 1646574870 + Player_Graphics_67: 1046154335 + Player_Graphics_68: 1114147934 + Player_Graphics_69: 1087113556 + Player_Graphics_7: -723117680 + Player_Graphics_70: -1043010748 + Player_Graphics_71: 1660914977 + Player_Graphics_72: -852126981 + Player_Graphics_73: -622541784 + Player_Graphics_74: 780800254 + Player_Graphics_75: -378549456 + Player_Graphics_76: 1663342945 + Player_Graphics_77: -2122265812 + Player_Graphics_78: 1322962067 + Player_Graphics_79: 2118243265 + Player_Graphics_8: 2013422008 + Player_Graphics_80: 1567180816 + Player_Graphics_81: 332236728 + Player_Graphics_82: -1678372270 + Player_Graphics_83: 1930878484 + Player_Graphics_84: 505193807 + Player_Graphics_85: 1071510893 + Player_Graphics_86: -1668542072 + Player_Graphics_87: 855385908 + Player_Graphics_88: -1300519912 + Player_Graphics_89: 1551369741 + Player_Graphics_9: -688480063 + Player_Graphics_90: -2045663041 + Player_Graphics_91: 517161683 + Player_Graphics_92: -140065073 + Player_Graphics_93: 1304353503 + Player_Graphics_94: -2099094754 + Player_Graphics_95: -1468081842 + Player_Graphics_96: 854581780 + Player_Graphics_97: 194286820 + Player_Graphics_98: 1932403333 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Player.cs b/Assets/Player.cs index 378bc4d..3fb0df4 100644 --- a/Assets/Player.cs +++ b/Assets/Player.cs @@ -2,16 +2,93 @@ using UnityEngine; public class Player : MonoBehaviour { - public Rigidbody2D rb; - // Start is called once before the first execution of Update after the MonoBehaviour is created - void Start() + private Animator anim; + private Rigidbody2D rb; + + [Header("Movement details")] + [SerializeField] private float moveSpeed = 4.58f; + [SerializeField] private float jumpForce = 12; + private bool facingRight = true; + private float xInput; + + [Header("Collision details")] + [SerializeField] private float groundCheckDistance; + [SerializeField] private LayerMask whatIsGround; + private bool isGrounded; + + private void Awake() { - + rb = GetComponent(); + anim = GetComponentInChildren(); } - // Update is called once per frame - void Update() + private void Update() + { - rb.linearVelocity = new Vector2(Input.GetAxis("Horizontal"), rb.linearVelocityY); + HandleCollision(); + HandleInput(); + HandleMovement(); + HandleAnimations(); + HandleFlip(); } + + private void HandleInput() + { + xInput = Input.GetAxisRaw("Horizontal"); + + if (Input.GetKeyDown(KeyCode.K)) + { + jump(); + } + } + + + private void HandleAnimations() + { + bool isMoving = rb.linearVelocity.x != 0; + anim.SetBool("isMoving", isMoving); + } + + private void HandleMovement() + { + rb.linearVelocity = new Vector2(xInput * moveSpeed, rb.linearVelocity.y); + } + + private void jump() + { + if (isGrounded) + { + rb.linearVelocity = new Vector2(rb.linearVelocity.x, jumpForce); + } + } + + private void HandleCollision() + { + isGrounded = Physics2D.Raycast(transform.position, Vector2.down, groundCheckDistance, whatIsGround); + } + + private void HandleFlip() + { + if(rb.linearVelocity.x > 0 && facingRight == false) + { + Flip(); + } + else if (rb.linearVelocity.x < 0 && facingRight == true) + { + Flip(); + } + } + + private void Flip() + { + transform.Rotate(0, 180, 0); + facingRight = !facingRight; + } + + private void OnDrawGizmos() + { + Gizmos.DrawLine(transform.position, transform.position + new Vector3(0, -groundCheckDistance)); + } + + } diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index fc443d5..a3093c9 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -128,10 +128,9 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 420449211} - - component: {fileID: 420449210} - component: {fileID: 420449209} - - component: {fileID: 420449212} - component: {fileID: 420449213} + - component: {fileID: 420449214} m_Layer: 0 m_Name: Player m_TagString: Untagged @@ -152,9 +151,9 @@ Rigidbody2D: m_UseFullKinematicContacts: 0 m_UseAutoMass: 0 m_Mass: 1 - m_LinearDamping: 0 + m_LinearDamping: 0.5 m_AngularDamping: 0.05 - m_GravityScale: 5 + m_GravityScale: 3.5 m_Material: {fileID: 6200000, guid: f314db0ef0ce38e42ac269eab083ad71, type: 2} m_IncludeLayers: serializedVersion: 2 @@ -165,66 +164,7 @@ Rigidbody2D: m_Interpolate: 0 m_SleepingMode: 1 m_CollisionDetection: 0 - m_Constraints: 0 ---- !u!212 &420449210 -SpriteRenderer: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 420449208} - 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_ForceMeshLod: -1 - m_MeshLodSelectionBias: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_MaskInteraction: 0 - m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} - 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: 1 - m_SpriteSortPoint: 0 + m_Constraints: 4 --- !u!4 &420449211 Transform: m_ObjectHideFlags: 0 @@ -234,14 +174,33 @@ Transform: m_GameObject: {fileID: 420449208} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 4.08, y: 3.05, z: 0} + m_LocalPosition: {x: 4.01, y: -1.26, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 1414990379} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!58 &420449212 -CircleCollider2D: +--- !u!114 &420449213 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420449208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cb2ed43676cd08e4da098563b4cef1e9, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Player + moveSpeed: 8 + jumpForce: 12 + groundCheckDistance: 1.4 + whatIsGround: + serializedVersion: 2 + m_Bits: 64 +--- !u!70 &420449214 +CapsuleCollider2D: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -274,21 +233,9 @@ CircleCollider2D: m_UsedByEffector: 0 m_CompositeOperation: 0 m_CompositeOrder: 0 - m_Offset: {x: 0, y: 0} - m_Radius: 0.5 ---- !u!114 &420449213 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 420449208} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: cb2ed43676cd08e4da098563b4cef1e9, type: 3} - m_Name: - m_EditorClassIdentifier: Assembly-CSharp::Player - rb: {fileID: 420449209} + m_Offset: {x: 0, y: -0.3} + m_Size: {x: 0.778394, y: 2.101978} + m_Direction: 0 --- !u!1 &454696404 GameObject: m_ObjectHideFlags: 0 @@ -300,7 +247,8 @@ GameObject: - component: {fileID: 454696406} - component: {fileID: 454696405} - component: {fileID: 454696407} - m_Layer: 0 + - component: {fileID: 454696408} + m_Layer: 6 m_Name: Platform m_TagString: Untagged m_Icon: {fileID: 0} @@ -427,6 +375,33 @@ BoxCollider2D: m_AutoTiling: 0 m_Size: {x: 1, y: 1} m_EdgeRadius: 0 +--- !u!50 &454696408 +Rigidbody2D: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454696404} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 5 + m_LinearDamping: 0 + m_AngularDamping: 2 + 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: 7 --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -533,7 +508,7 @@ Camera: far clip plane: 1000 field of view: 34 orthographic: 1 - orthographic size: 5 + orthographic size: 8 m_Depth: -1 m_CullingMask: serializedVersion: 2 @@ -648,6 +623,120 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1414990378 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1414990379} + - component: {fileID: 1414990380} + - component: {fileID: 1414990381} + m_Layer: 0 + m_Name: Animator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1414990379 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414990378} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 420449211} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1414990380 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414990378} + 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_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_Sprite: {fileID: -1750721404, guid: 2a192e342a6409b4d9677ef04a238b79, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 4.3125, y: 2.75} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_SpriteSortPoint: 0 +--- !u!95 &1414990381 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414990378} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 4cd7b9f753545ba40a639b07336ad421, 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!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 diff --git a/Assets/_Recovery.meta b/Assets/_Recovery.meta new file mode 100644 index 0000000..2e41eeb --- /dev/null +++ b/Assets/_Recovery.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c62c6dafbcb385048a9ba5c55eb66679 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Recovery/0.unity b/Assets/_Recovery/0.unity new file mode 100644 index 0000000..8f1be6b --- /dev/null +++ b/Assets/_Recovery/0.unity @@ -0,0 +1,687 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &420449208 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 420449211} + - component: {fileID: 420449210} + - component: {fileID: 420449209} + - component: {fileID: 420449212} + - component: {fileID: 420449213} + m_Layer: 0 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!50 &420449209 +Rigidbody2D: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420449208} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_GravityScale: 5 + m_Material: {fileID: 6200000, guid: f314db0ef0ce38e42ac269eab083ad71, type: 2} + 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!212 &420449210 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420449208} + 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_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + 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: 1 + m_SpriteSortPoint: 0 +--- !u!4 &420449211 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420449208} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4.08, y: 3.05, 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!58 &420449212 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420449208} + 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, y: 0} + m_Radius: 0.5 +--- !u!114 &420449213 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420449208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cb2ed43676cd08e4da098563b4cef1e9, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Player + rb: {fileID: 0} + moveSpeed: 3.5 +--- !u!1 &454696404 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 454696406} + - component: {fileID: 454696405} + - component: {fileID: 454696407} + - component: {fileID: 454696408} + m_Layer: 0 + m_Name: Platform + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &454696405 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454696404} + 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_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3} + m_Color: {r: 0.23538396, g: 0.1986917, b: 0.8962264, 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: 1 + m_SpriteSortPoint: 0 +--- !u!4 &454696406 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454696404} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.14, y: -3.14, z: 0} + m_LocalScale: {x: 16.002186, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!61 &454696407 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454696404} + 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, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 1, y: 1} + newSize: {x: 1, y: 1} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 +--- !u!50 &454696408 +Rigidbody2D: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454696404} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 5 + m_LinearDamping: 0 + m_AngularDamping: 2 + 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: 7 +--- !u!1 &519420028 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519420032} + - component: {fileID: 519420031} + - component: {fileID: 519420029} + - component: {fileID: 519420030} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &519420029 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 +--- !u!114 &519420030 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 + m_Version: 2 +--- !u!20 &519420031 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 34 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &519420032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + 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!1 &619394800 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 619394802} + - component: {fileID: 619394801} + m_Layer: 0 + m_Name: Global Light 2D + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &619394801 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 619394800} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ComponentVersion: 2 + m_LightType: 4 + m_BlendStyleIndex: 0 + m_FalloffIntensity: 0.5 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_LightVolumeIntensity: 1 + m_LightVolumeEnabled: 0 + m_ApplyToSortingLayers: 00000000 + m_LightCookieSprite: {fileID: 0} + m_DeprecatedPointLightCookieSprite: {fileID: 0} + m_LightOrder: 0 + m_AlphaBlendOnOverlap: 0 + m_OverlapOperation: 0 + m_NormalMapDistance: 3 + m_NormalMapQuality: 2 + m_UseNormalMap: 0 + m_ShadowsEnabled: 0 + m_ShadowIntensity: 0.75 + m_ShadowSoftness: 0 + m_ShadowSoftnessFalloffIntensity: 0.5 + m_ShadowVolumeIntensityEnabled: 0 + m_ShadowVolumeIntensity: 0.75 + m_LocalBounds: + m_Center: {x: 0, y: -0.00000011920929, z: 0} + m_Extent: {x: 0.9985302, y: 0.99853027, z: 0} + m_PointLightInnerAngle: 360 + m_PointLightOuterAngle: 360 + m_PointLightInnerRadius: 0 + m_PointLightOuterRadius: 1 + m_ShapeLightParametricSides: 5 + m_ShapeLightParametricAngleOffset: 0 + m_ShapeLightParametricRadius: 1 + m_ShapeLightFalloffSize: 0.5 + m_ShapeLightFalloffOffset: {x: 0, y: 0} + m_ShapePath: + - {x: -0.5, y: -0.5, z: 0} + - {x: 0.5, y: -0.5, z: 0} + - {x: 0.5, y: 0.5, z: 0} + - {x: -0.5, y: 0.5, z: 0} +--- !u!4 &619394802 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 619394800} + 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!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 519420032} + - {fileID: 619394802} + - {fileID: 454696406} + - {fileID: 420449211} diff --git a/Assets/_Recovery/0.unity.meta b/Assets/_Recovery/0.unity.meta new file mode 100644 index 0000000..bf1fce5 --- /dev/null +++ b/Assets/_Recovery/0.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1868cf6f652845d4bace7e07c4385c9f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1c92a78..acda2db 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -2,7 +2,7 @@ %TAG !u! tag:unity3d.com,2011: --- !u!78 &1 TagManager: - serializedVersion: 2 + serializedVersion: 3 tags: [] layers: - Default @@ -11,7 +11,7 @@ TagManager: - - Water - UI - - + - Ground - - - @@ -41,3 +41,5 @@ TagManager: - name: Default uniqueID: 0 locked: 0 + m_RenderingLayers: + - Default diff --git a/Q&A.md b/Q&A.md new file mode 100644 index 0000000..f8cee1e --- /dev/null +++ b/Q&A.md @@ -0,0 +1,175 @@ +# Q&A + +> 学习过程中遇到的问题记录 + +--- + +## Q1:为什么保留 `rb.linearVelocity.y` 不会导致 Player 上下移动,而改变 `x` 就会左右移动? + +### 关键理解 + +`rb.linearVelocity` 每一帧都被**完整重新赋值**,X 和 Y 的来源不同决定了它们的行为不同。 + +### X 轴:由输入主动控制 + +```csharp +rb.linearVelocity = new Vector2(xInput * moveSpeed, rb.linearVelocity.y); +// ^^^^^^^^^^^^^^^^ +// 这部分的数值由你决定 +``` + +| 操作 | `xInput` | `velocity.x` | 效果 | +|------|:--------:|:------------:|:----:| +| 按 A / ← | -1 | -3.5 | 向左移动 | +| 松开 | 0 | 0 | 停止 | +| 按 D / → | 1 | 3.5 | 向右移动 | + +每次赋值,X 都被设为**输入决定的明确值**,所以会立刻产生/停止移动。 + +### Y 轴:物理系统已经在运行 + +`rb.linearVelocity.y` 不是空的,它已经是物理引擎当前帧算好的结果: + +| 状态 | `velocity.y` 实际值 | 保留后效果 | +|------|:-------------------:|:----------:| +| 站地上 | ≈ 0 | 不动(地面碰撞把 y 锁为 0) | +| 下落中 | < 0(重力累加) | 继续下落 | +| 跳起后 | > 0 → 逐渐减小 | 上升 → 减速 → 下落 | + +保留 Y 的本质是 **"不去干涉"** 物理系统对垂直运动的控制,而不是"主动让角色上下动"。 + +### 反例:写死 Y 会怎样? + +```csharp +rb.linearVelocity = new Vector2(xInput * moveSpeed, 0); // ❌ +``` + +- 重力被清零 → 角色不会下落,飘在空中 +- 跳跃被清零 → 跳不起来 +- 地面碰撞结果被覆盖 → 可能会卡进地面 + +### 一句话总结 + +> X 轴 velocity 是你主动赋值来**命令移动**,Y 轴 velocity 是物理系统**正在运行的结果**,保留它只是不去搞破坏。 + +--- + +*2026-05-23* + +## Q2:跳跃时直接覆盖 Y 为 `jumpForce`,和之前说的"保留 Y"不矛盾吗?为什么不用 `y + jumpForce`? + +### 问题背景 + +之前的 Q&A 说"保留 `rb.linearVelocity.y` 不去干涉物理系统",但跳跃代码却直接覆盖: + +```csharp +// 平时移动:保留 Y(不去干扰物理) +rb.linearVelocity = new Vector2(xInput * moveSpeed, rb.linearVelocity.y); + +// 跳跃时:覆盖 Y +rb.linearVelocity = new Vector2(rb.linearVelocity.x, jumpForce); +``` + +直觉上会觉得应该写成 `rb.linearVelocity.y + jumpForce` 才对。 + +### 核心解答 + +**场景不同,原则不同:** + +| 场景 | 对 Y 的操作 | 意图 | +|------|:----------:|:----:| +| 左右移动 | 保留 Y | **不管**物理系统的事 | +| 跳跃 | 覆盖 Y = jumpForce | **主动干预**,跳跃本身就是这个干预 | + +平时保留 Y 是因为"不需要管 Y",跳跃覆盖 Y 是因为"现在就要动 Y"。 + +### 为什么用 `= jumpForce` 而不是 `+= jumpForce`? + +站在平地时 `velocity.y ≈ 0`,两者结果一样。但在以下情况加法会出问题: + +| 场景 | velocity.y 当前值 | `= jumpForce` | `+= jumpForce` | 哪个合理 | +|------|:--:|:--:|:--:|:--:| +| 平地站着 | ≈ 0 | = 8 ✅ | = 8 ✅ | 一样 | +| 在上升平台上跳 | > 0(如 +3) | = 8 ✅ | = 11 ❌ 异常高 | `=` | +| 下落中误触跳跃 | < 0(如 -5) | = 8 ✅ | = 3 ❌ 跳不起来 | `=` | + +- **`= jumpForce`** — 每次跳跃高度一致,可预测 ✅ +- **`+= jumpForce`** — 跳跃高度受当前 Y 速度影响,结果不稳定 ❌ + +### 总结 + +> 保留 Y = **不想管**物理的事 +> 覆盖 Y = **正在主动做跳跃这件事** +> 用 `=` 保证每次跳跃可预测,用 `+=` 反而会让跳跃高度飘忽不定 + +--- + +## Q3:二段跳可以从哪些方面入手设计? + +### 前提 + +第九次更新已经实现了接地检测(`isGrounded`),跳跃被限制为"只有在地上才能跳"。在此基础上扩展二段跳,需要考虑以下几个维度: + +### 1. 核心机制 —— 如何判断"能不能跳" + +**计数器方案(推荐,可扩展性强):** + +``` +jumpCount = 允许的跳跃次数(例如 2) +remainingJumps = 当前剩余次数 + +想跳时: + 1. 检查 remainingJumps > 0 + 2. 是 → 跳,remainingJumps-- + 3. 否 → 不跳 + +落地时: + 重置 remainingJumps = jumpCount +``` + +- 优点:改为 3 段跳、4 段跳只需改一个数字,代码不用动 +- 问自己:`remainingJumps` 什么时候扣?什么时候重置? + +### 2. 重置时机 —— "跳"这个状态何时结束 + +核心问题:**二段跳的"次数"在什么时候补回来?** + +| 方案 | 行为 | 手感 | +|------|------|------| +| 落地重置 | 碰到地面才能再次二段跳 | 标准平台跳跃,最常用 | +| 接触墙壁重置 | 贴墙也能补跳 | 适合有爬墙机制的游戏 | +| 每 X 秒恢复一次 | 空中待一会儿又能跳 | 节奏较怪,很少用 | + +> 当前项目有 `isGrounded`,落地重置是最自然的选择。 + +### 3. 跳跃力设计 —— 二段跳应该和第一段一样高吗? + +| 方案 | 效果 | 代表游戏 | +|------|------|---------| +| 相同 jumpForce | 两段跳一样高,手感直接 | 空洞骑士(部分技能)| +| 稍弱(如 jumpForce × 0.8)| 第二段更低,更真实 | 蔚蓝 Celeste | +| 固定低值 | 二段跳只用来"续一下" | 大乱斗 | + +> 可以先设两个独立参数 `jumpForce` 和 `doubleJumpForce`,分别调。 + +### 4. 需要考虑的边界问题 + +| 问题 | 说明 | +|------|------| +| **走边缘掉落** | 从平台边缘走下来(没按跳),空中能二段跳吗?通常可以 | +| **没用第一段跳** | 跳过一次后空中还能跳一次?还是说必须先用一次跳?取决于设计 | +| **Coyote Time** | 离开地面后很短时间(如 0.1s)内按跳还算落地跳吗?和剩余次数如何叠加? | +| **动画反馈** | 二段跳时播放不同的动画(如翻转、翅膀),让玩家感知到"我用了二段跳" | +| **只能一次** | 二段跳用完没落地之前,不能再获得跳跃次数 | + +### 5. 建议的切入顺序 + +1. 先把计数器机制做出来(`jumpCount` / `remainingJumps`) +2. `jump()` 中把 `if(isGrounded)` 改为 `if(remainingJumps > 0)` +3. 落地时重置 `remainingJumps = jumpCount` +4. 调 `doubleJumpForce` 找手感 +5. 加动画区分一段跳和二段跳 + +--- + +*2026-05-25* diff --git a/StudyNotes.md b/StudyNotes.md new file mode 100644 index 0000000..ad5efa5 --- /dev/null +++ b/StudyNotes.md @@ -0,0 +1,785 @@ +# Unity RPG 学习笔记 + +> 📅 创建于 2026-05-23 +> 🎯 按时间顺序记录学习过程 + +--- + +## 2026-05-23 · 第一次更新 + +**文件:** `Assets/Player.cs` + +```csharp +using UnityEngine; + +public class Player : MonoBehaviour +{ + public float xInput; + + private void Update() + // 旧的移动方式 + { + xInput = Input.GetAxisRaw("Horizontal"); + } +} +``` + +### 知识点 + +#### 1. `MonoBehaviour` 继承 +- Unity 中挂载到 GameObject 的脚本必须继承 `MonoBehaviour`。 +- 继承后可使用生命周期方法(`Update`、`Start`、`Awake` 等)。 + +#### 2. `public` 字段暴露到 Inspector +- `public float xInput;` 会在 Inspector 面板中可见、可编辑。 +- 公开字段会被序列化,保存到场景/预制体数据中。 + +#### 3. `Update()` 生命周期 +- 每帧调用一次,帧率越高调用越频繁。 +- 适合处理**输入检测**、**持续移动**等实时逻辑。 + +#### 4. `Input.GetAxisRaw("Horizontal")` vs `GetAxis("Horizontal")` + +| 方法 | 返回值变化 | 手感 | +|---|---|---| +| `GetAxis` | 0→1 平滑过渡(加减速曲线) | 柔和,有惯性 | +| `GetAxisRaw` | 瞬间跳变 -1/0/1 | 灵敏,即时响应 | + +- `"Horizontal"` 默认绑定:A/D、←/→、手柄左摇杆 X 轴。 + +#### 5. `Input` 类常用方法 +- `GetAxis()` / `GetAxisRaw()` — 轴向输入 +- `GetKey()` / `GetKeyDown()` / `GetKeyUp()` — 按键检测 +- `GetMouseButton()` — 鼠标检测 + + +--- + +## 2026-05-23 · 第二次更新 + +**文件:** `Assets/Player.cs` + +```csharp +using UnityEngine; + +public class Player : MonoBehaviour +{ + public Rigidbody2D rb; + + public float moveSpeed = 3.5f; + public float xInput; + + private void Update() + // 旧的移动方式 + { + xInput = Input.GetAxisRaw("Horizontal"); + + rb.linearVelocity = new Vector2 (xInput * moveSpeed, rb.linearVelocity.y); + } +} +``` + +### 新增知识点 + +#### 1. `Rigidbody2D` 组件 +- Unity 2D 物理引擎的核心组件,赋予物体物理属性(质量、重力、速度等)。 +- 通过 `public Rigidbody2D rb;` 声明后,需在 Inspector 中拖入对应的 Rigidbody2D 组件进行绑定。 +- 凡是需要物理模拟(重力、碰撞、速度)的 2D 物体都应挂载此组件。 + +#### 2. `linearVelocity` 属性(物理移动) +- `Rigidbody2D.linearVelocity` 表示刚体的**线性速度**(Vector2 类型)。 +- 直接赋值可以瞬间改变物体速度,实现物理驱动的移动。 +- 这是旧版 `velocity` 属性的新命名(Unity 2023+ 推荐使用 `linearVelocity`)。 +- 相比直接改 `Transform.position`,物理移动能正确参与碰撞检测。 + +#### 3. `Vector2` 构造函数 +- `new Vector2(x, y)` 创建一个二维向量。 +- `x` 控制水平移动:`xInput * moveSpeed`,按方向键时值为 ±3.5f,松开时为 0。 +- `y` 保持当前垂直速度:`rb.linearVelocity.y`,避免干扰重力/跳跃。 +- ⚠️ 注意:代码中 `new Vector2 (...)` 括号前多了一个空格,虽不影响编译但建议去掉。 + +#### 4. 物理移动 vs Transform 移动(对比) + +| 方式 | 原理 | 碰撞检测 | 适用场景 | +|---|---|---|---| +| `rb.linearVelocity` | 修改刚体速度 | ✅ 物理正确 | 平台跳跃、推箱子等 | +| `transform.Translate` | 直接改位置 | ❌ 可能穿模 | 纯位移、无物理需求 | + +#### 5. 移动逻辑解析 +``` +按下 A / ← → xInput = -1 → velocity.x = -3.5 → 向左移动 +松开按键 → xInput = 0 → velocity.x = 0 → 停止 +按下 D / → → xInput = 1 → velocity.x = 3.5 → 向右移动 +``` + +--- + +## 2026-05-24 · 第三次更新 + +**文件:** `Assets/Player.cs` + +```csharp +using UnityEngine; + +public class Player : MonoBehaviour +{ + private Rigidbody2D rb; + [SerializeField] private float moveSpeed = 3.5f; + private float xInput; + + + private void Awake() + { + rb = GetComponent(); + } + + private void Update() + // 旧的移动方式 + { + xInput = Input.GetAxisRaw("Horizontal"); + + rb.linearVelocity = new Vector2 (xInput * moveSpeed, rb.linearVelocity.y); + } +} +``` + +### 本次改动 · 新增知识点 + +#### 1. `private` 字段与封装 + +- 之前字段全用 `public`,现在改为 `private`。 +- **原则:** 不需要外部访问的字段应该设为私有,遵循封装原则,防止意外修改。 +- `xInput` 改为 `private` 很合理——它只是内部计算用的临时值,Inspector 中没必要看到。 + +#### 2. `[SerializeField]` 特性 + +- 问题:字段设为 `private` 后,Inspector 面板中就看不到了。 +- 解决:加 `[SerializeField]` 可以让**私有字段也显示在 Inspector 中**。 +- 这样就做到了「Inspector 可调,代码不可外部访问」的最佳实践。 +- `moveSpeed` 用了这个特性——可以在编辑器里调速度,但其他脚本不能随便改。 + +#### 3. `Awake()` 生命周期方法 + +- `Awake()` 在脚本实例加载时调用,**比 `Start()` 更早**,且只调用一次。 +- Unity 生命周期顺序:`Awake()` → `OnEnable()` → `Start()` → `Update()` → ... +- 适合做**组件引用的初始化**(获取自己身上的组件、初始化变量等)。 +- 与 `Start()` 的区别:`Awake` 在所有脚本的 `Start` 之前执行完,适合组件间的依赖初始化。 + +#### 4. `GetComponent()` 方法 + +- 从当前 GameObject 上获取指定类型的组件引用。 +- `rb = GetComponent();` — 自动找到同物体上的 Rigidbody2D 组件并赋值。 +- 这是比手动在 Inspector 中拖拽更优雅的方式——**减少人为忘记绑定的风险**。 +- 前提:该组件必须挂载在同一个 GameObject 上。 + +#### 5. 对比:手动拖拽 vs GetComponent + +| 方式 | 字段类型 | 优点 | 缺点 | +|---|---|---|---| +| Inspector 拖拽 | `public` | 可以绑定其他物体上的组件 | 容易忘记拖,运行时 NullReference | +| `GetComponent` | `private` | 不会忘,代码自动获取 | 只能获取同一物体上的组件 | + +> 💡 当前代码中 `rb` 用的是 `GetComponent`,因为 Rigidbody2D 肯定在 Player 自己身上,很合适。 + +### 使用建议 + +- 自己身上的组件 → `GetComponent` + `Awake` +- 需要引用其他物体的组件 → `public`(或 `[SerializeField] private`)+ Inspector 拖拽 + +--- + +## 2026-05-24 · 第四次更新 + +**文件:** `Assets/Player.cs` + +```csharp +using UnityEngine; + +public class Player : MonoBehaviour +{ + private Rigidbody2D rb; + [SerializeField] private float moveSpeed = 3.5f; + private float xInput; + + + private void Awake() + { + rb = GetComponent(); + } + + private void Update() + // 旧的移动方式 + { + xInput = Input.GetAxisRaw("Horizontal"); + + rb.linearVelocity = new Vector2 (xInput * moveSpeed, rb.linearVelocity.y); + + // 按K + if (Input.GetKey(KeyCode.K)) + { + Debug.Log("holding K"); + } + // 按下K + if (Input.GetKeyDown(KeyCode.K)) + { + Debug.Log("pressed K"); + } + } +} +``` + +### 本次改动 · 新增知识点 + +#### 1. 按键检测三剑客:`GetKey` / `GetKeyDown` / `GetKeyUp` + +| 方法 | 触发时机 | 返回值 | 典型用途 | +|---|---|---|---| +| `Input.GetKey(KeyCode)` | 按键**按住**期间 | 每帧 `true` | 持续开火、加速跑 | +| `Input.GetKeyDown(KeyCode)` | 按键**按下**的那一帧 | 只 `true` 一次 | 跳跃、菜单确认 | +| `Input.GetKeyUp(KeyCode)` | 按键**松开**的那一帧 | 只 `true` 一次 | 蓄力释放、弹起 | + +> ⚡ 记忆口诀:`GetKey` = 按住不放,`GetKeyDown` = 点一下,`GetKeyUp` = 松开那一刻。 + +#### 2. `KeyCode` 枚举 + +- 用 `KeyCode.K` 代替字符串 `"k"`,避免拼写错误,IDE 有自动补全。 +- 常用按键:`KeyCode.Space`(空格)、`KeyCode.Escape`、`KeyCode.W/A/S/D`、`KeyCode.Mouse0`(鼠标左键)。 + +#### 3. `Debug.Log()` 调试输出 + +- 向 Unity 控制台(Console)输出消息,调试必备。 +- `Debug.Log("xxx")` — 普通信息 +- `Debug.LogWarning("xxx")` — 警告(黄色) +- `Debug.LogError("xxx")` — 错误(红色,会暂停编辑器播放) + +#### 4. 代码验证思路 + +当前代码跑起来后的效果: +- 按住 K → 控制台疯狂刷 "holding K"(每帧一条) +- 敲一下 K → 只出现一条 "pressed K" +- 通过这个对比就能直观理解 `GetKey` 和 `GetKeyDown` 的区别 ✅ + +--- + +## 2026-05-24 · 第五次更新 + +**文件:** `Assets/Player.cs` + +```csharp +using UnityEngine; + +public class Player : MonoBehaviour +{ + private Rigidbody2D rb; + [SerializeField] private float moveSpeed = 3.5f; + [SerializeField] private float jumpForce = 8; + private float xInput; + + + private void Awake() + { + rb = GetComponent(); + } + + private void Update() + // 旧的移动方式 + { + xInput = Input.GetAxisRaw("Horizontal"); + + rb.linearVelocity = new Vector2 (xInput * moveSpeed, rb.linearVelocity.y); + + + if (Input.GetKeyDown(KeyCode.K)) + { + rb.linearVelocity = new Vector2(rb.linearVelocity.x, jumpForce); + } + } +} +``` + +### 本次改动 · 新增知识点 + +#### 1. 跳跃实现原理 + +- 跳跃 = 给刚体的 **Y 轴速度**一个瞬间向上的值。 +- `rb.linearVelocity = new Vector2(rb.linearVelocity.x, jumpForce);` + - X 保持不变:角色在空中仍能左右移动 + - Y 覆盖为 `jumpForce`(正数 = 向上) +- 之后重力会自然把 Y 速度拉回负值,形成"上升→下落"的弧线。 + +#### 2. 为什么跳跃用 `GetKeyDown` 而不是 `GetKey` + +- `GetKeyDown` — 只在按下那一帧触发 → 按一次跳一次 ✅ +- `GetKey` — 按住期间每帧都触发 → 角色会一直往上飞 ❌ +- 跳跃是一次性动作,必须用 `GetKeyDown`。 + +#### 3. `jumpForce` 参数调优 + +- `jumpForce = 8` 是目前的值,可以根据手感调整: + - 太小 → 跳不起来 + - 太大 → 飞出屏幕 +- 配合 Rigidbody2D 的 **Gravity Scale**(重力缩放)一起调,效果更好。 + - Gravity Scale 越大 → 下落越快 → 跳跃手感更"重" + - Gravity Scale 越小 → 轻飘飘(适合太空/月球感) + +#### 4. 当前完整移动逻辑图 + +``` +┌─────────────────────────────────────────┐ +│ Update() │ +├─────────────────────────────────────────┤ +│ xInput = GetAxisRaw("Horizontal") │ +│ ↓ │ +│ velocity.x = xInput × moveSpeed │ ← 左右移动(每帧) +│ velocity.y = 保持原来的 y │ +│ ↓ │ +│ if GetKeyDown(K) │ +│ velocity.y = jumpForce │ ← 跳跃(按下瞬间) +└─────────────────────────────────────────┘ +``` + +> ⚠️ 当前跳跃没有接地检测,角色可以在空中无限跳跃。后续可以加 `isGrounded` 判断来限制。 + +--- + +## 2026-05-24 · 第六次更新 + +**文件:** `Assets/Player.cs` + +```csharp +using UnityEngine; + +public class Player : MonoBehaviour +{ + private Animator anim; + private Rigidbody2D rb; + [SerializeField] private float moveSpeed = 3.5f; + [SerializeField] private float jumpForce = 8; + private float xInput; + + + private void Awake() + { + rb = GetComponent(); + anim = GetComponentInChildren(); + } + + private void Update() + { + HandleInput(); + HandleMovement(); + HandleAnimations(); + } + + private void HandleInput() + { + xInput = Input.GetAxisRaw("Horizontal"); + + if (Input.GetKeyDown(KeyCode.K)) + { + jump(); + } + } + + private void HandleMovement() + { + rb.linearVelocity = new Vector2(xInput * moveSpeed, rb.linearVelocity.y); + } + + private void HandleAnimations() + { + bool isMoving = rb.linearVelocity.x != 0; + anim.SetBool("isMoving", isMoving); + } + + private void jump() + { + rb.linearVelocity = new Vector2(rb.linearVelocity.x, jumpForce); + } +} +``` + +### 本次改动 · 新增知识点 + +#### 1. 代码重构:拆分 Update() + +- 之前 `Update()` 里什么都混在一起,现在拆成三个职责明确的方法: + +| 方法 | 职责 | +|---|---| +| `HandleInput()` | 读取玩家输入,触发相应动作 | +| `HandleMovement()` | 根据输入计算并应用速度 | +| `HandleAnimations()` | 根据状态更新动画参数 | + +- 好处:易读、易改、易扩展。比如以后加攻击,加一个 `HandleCombat()` 即可。 + +#### 2. `Animator` 组件与动画控制 + +- `Animator` 是 Unity 的动画状态机组件,控制角色动画的播放。 +- `GetComponentInChildren()` — 从**子物体**上获取 Animator。 + - 因为 Animator 通常挂在角色模型的子物体上,而不是 Player 根物体。 +- 控制动画的方式:通过 `SetBool` / `SetFloat` / `SetTrigger` 等方法修改 Animator 参数。 + +#### 3. `anim.SetBool("isMoving", value)` + +- 在 Animator 窗口中预先创建 `isMoving` 参数(Bool 类型)。 +- 代码中设置这个参数 → Animator 根据状态切换动画(Idle ↔ Run)。 +- `isMoving = rb.linearVelocity.x != 0`:水平速度不为 0 就是移动中。 + +``` +isMoving = false → Idle 动画 +isMoving = true → Run 动画 +``` + +#### 4. Animator 参数类型对比 + +| 类型 | 方法 | 用途 | +|---|---|---| +| Bool | `SetBool("name", true/false)` | 二元状态:跑/不跑、地面/空中 | +| Float | `SetFloat("name", 值)` | 连续值:速度、方向 | +| Trigger | `SetTrigger("name")` | 一次性触发:攻击、受伤、死亡 | +| Int | `SetInteger("name", 值)` | 整数状态:武器序号、连击段数 | + +#### 5. `GetComponent` vs `GetComponentInChildren` + +| 方法 | 搜索范围 | 示例 | +|---|---|---| +| `GetComponent()` | 当前物体 | 获取 Player 上的 Rigidbody2D | +| `GetComponentInChildren()` | 当前物体 + 所有子物体 | 获取模型子物体上的 Animator | +| `GetComponentInParent()` | 当前物体 + 所有父物体 | 少用,偶尔反向查找 | + +#### 6. 当前架构图 + +``` +Player (MonoBehaviour) +├── Awake() +│ ├── rb = GetComponent() +│ └── anim = GetComponentInChildren() +│ +└── Update() + ├── HandleInput() → 读取按键,调用 jump() + ├── HandleMovement() → 设置 velocity + └── HandleAnimations() → 设置 isMoving 驱动动画 +``` + +--- + +## 2026-05-24 · 第七次更新 + +**文件:** `Assets/Player.cs` + +```csharp +using UnityEngine; + +public class Player : MonoBehaviour +{ + private Animator anim; + private Rigidbody2D rb; + [SerializeField] private float moveSpeed = 3.5f; + [SerializeField] private float jumpForce = 8; + private float xInput; + [SerializeField] private bool facingRight = true; + + // ... Awake、Update、HandleInput、HandleMovement、HandleAnimations、jump 同上 ... + + [ContextMenu("Flip")] + private void Flip() + { + transform.Rotate(0, 180, 0); + facingRight = !facingRight; + } +} +``` + +### 本次改动 · 新增知识点 + +#### 1. `[ContextMenu]` 特性 —— 测试利器 + +- 给方法加上 `[ContextMenu("显示名称")]` 后,可以在 Inspector 中右键组件直接调用。 +- **非常适合在编辑器中手动测试某个功能**,不需要写额外的测试代码。 + +``` +用法: +1. 选中挂载 Player 脚本的 GameObject +2. 在 Inspector 中找到 Player 组件,右键 +3. 菜单中出现 "Flip" → 点击即可执行 Flip() 方法 +``` + +#### 2. `transform.Rotate(x, y, z)` —— 旋转物体 + +- `transform.Rotate(0, 180, 0)` → 绕 Y 轴旋转 180°,即**水平翻转**。 +- 三个参数分别对应 X / Y / Z 轴旋转(欧拉角,单位:度)。 +- 绕 Y 轴旋转 180° 是 2D 游戏中最常用的翻转方式(让角色面朝另一个方向)。 + +| 旋转 | 效果 | +|---|---| +| `Rotate(0, 0, 0)` | 面朝右 | +| `Rotate(0, 180, 0)` | 面朝左 | + +#### 3. `facingRight` 方向追踪 + +- `private bool facingRight = true;` 记录当前朝向。 +- `[SerializeField]` 让它在 Inspector 中可见,方便调试时观察。 +- `facingRight = !facingRight;` 每次翻转时取反,保持状态同步。 +- 后续可根据 `facingRight` 决定子弹发射方向、攻击判定范围等。 + +#### 4. `ContextMenu` vs 其他调用方式 + +| 方式 | 何时用 | +|---|---| +| `[ContextMenu]` | 编辑器里手动测试某个功能 | +| `Update()` 中调用 | 运行时每帧自动执行 | +| `Button`(UI)| 玩家通过游戏界面触发 | + +> 💡 `[ContextMenu]` 即使方法是 `private` 也能调用,非常适合调试。 + +--- + +## 2026-05-25 · 第八次更新 + +**文件:** `Assets/Player.cs` + +```csharp +using UnityEngine; + +public class Player : MonoBehaviour +{ + private Animator anim; + private Rigidbody2D rb; + [SerializeField] private float moveSpeed = 4.58f; + [SerializeField] private float jumpForce = 8; + private float xInput; + [SerializeField] private bool facingRight = true; + + // ... Awake 同上 ... + + private void Update() + { + HandleInput(); + HandleMovement(); + HandleAnimations(); + HandleFlip(); // ← 新增 + } + + // ... HandleInput、HandleMovement、HandleAnimations、jump 同上 ... + + private void HandleFlip() + { + if(rb.linearVelocity.x > 0 && facingRight == false) + { + Flip(); + } + else if (rb.linearVelocity.x < 0 && facingRight == true) + { + Flip(); + } + } + + private void Flip() + { + transform.Rotate(0, 180, 0); + facingRight = !facingRight; + } +} +``` + +### 本次改动 · 新增知识点 + +#### 1. `HandleFlip()` —— 自动转向逻辑 + +- 之前 `Flip()` 只能通过 `[ContextMenu]` 手动调用,现在改成**运行时自动翻转**。 +- 核心思路:当角色**移动方向**与**当前朝向**不一致时,执行翻转。 + +#### 2. 翻转判断逻辑拆解 + +``` +向右移动 (velocity.x > 0) 且 面朝左 (facingRight == false) → 翻转 +向左移动 (velocity.x < 0) 且 面朝右 (facingRight == true) → 翻转 +其他情况(静止、方向已一致) → 不翻转 +``` + +| 速度方向 | facingRight | 需要翻转?| +|---|---|---| +| 向右 (>0) | true(面朝右)| ❌ 方向一致 | +| 向右 (>0) | false(面朝左)| ✅ 翻过来 | +| 向左 (<0) | true(面朝右)| ✅ 翻过来 | +| 向左 (<0) | false(面朝左)| ❌ 方向一致 | +| 静止 (=0) | 任意 | ❌ 不动不翻 | + +#### 3. 为什么用 `facingRight` 而不是直接每帧翻转 + +- 如果每帧都根据速度方向直接翻转(`if velocity.x > 0 → 右,else → 左`),会导致: + - 静止时角色朝向不确定(velocity.x = 0 时往哪边?) + - 可能每帧都在调用 `Rotate`,浪费性能 +- 用 `facingRight` 做**脏标记(dirty flag)**:只在需要翻转时才翻,静止时保持上次朝向。 + +#### 4. `[ContextMenu]` 的移除 + +- 上一次 `Flip()` 上挂了 `[ContextMenu("Flip")]` 用于手动测试。 +- 现在翻转逻辑已集成到 `Update` 中自动运行,不再需要手动触发,所以去掉了。 +- 这也是开发中的常见节奏:**先手动测试 → 确认 OK → 集成到自动化流程**。 + +#### 5. 当前完整流程图 + +``` +Update() +├── HandleInput() → 读取 A/D/K 输入 +├── HandleMovement() → xInput → velocity +├── HandleAnimations() → velocity.x != 0 → 跑/停 动画 +└── HandleFlip() → 方向不一致时 Flip() + └── Flip() + ├── Rotate(0, 180, 0) + └── facingRight = !facingRight +``` + +--- + +## 2026-05-25 · 第九次更新 + +**文件:** `Assets/Player.cs` + +```csharp +using Unity.VisualScripting; +using UnityEngine; + +public class Player : MonoBehaviour +{ + private Animator anim; + private Rigidbody2D rb; + + [Header("Movement details")] + [SerializeField] private float moveSpeed = 4.58f; + [SerializeField] private float jumpForce = 12; + private bool facingRight = true; + private float xInput; + + [Header("Collision details")] + [SerializeField] private float groundCheckDistance; + [SerializeField] private LayerMask whatIsGround; + private bool isGrounded; + + // ... Awake 同上 ... + + private void Update() + { + HandleCollision(); // ← 新增,放在最前面 + HandleInput(); + HandleMovement(); + HandleAnimations(); + HandleFlip(); + } + + // ... HandleInput、HandleMovement、HandleAnimations、HandleFlip、Flip 同上 ... + + private void jump() + { + if(isGrounded) // ← 加了接地判断 + rb.linearVelocity = new Vector2(rb.linearVelocity.x, jumpForce); + } + + private void HandleCollision() + { + isGrounded = Physics2D.Raycast(transform.position, Vector2.down, groundCheckDistance, whatIsGround); + } + + private void OnDrawGizmos() + { + Gizmos.DrawLine(transform.position, transform.position + new Vector3(0, -groundCheckDistance)); + } +} +``` + +### 本次改动 · 新增知识点 + +#### 1. 地面检测 (`isGrounded`) 解决无限跳跃 + +- 之前跳跃没有限制,空中也能一直跳。 +- 现在 `jump()` 加了 `if(isGrounded)` 判断,只有站在地面上才能跳。 + +#### 2. `Physics2D.Raycast()` —— 2D 射线检测 + +- 从指定位置向指定方向发射一条**不可见的射线**,检测是否碰到碰撞体。 +- 参数:`Physics2D.Raycast(起点, 方向, 距离, 层级掩码)` +- 当前用法: + ``` + 起点:transform.position(角色脚底位置) + 方向:Vector2.down(向下) + 距离:groundCheckDistance + 过滤:whatIsGround(只检测地面层) + ``` + +``` + 角色 + │ + ─────┼───── transform.position + │ + ↓ 射线 (Vector2.down, 长度 = groundCheckDistance) + ═════╪═════ 地面碰撞体 → 射线命中 → isGrounded = true + + ······│······ 没碰到地面 → isGrounded = false(在空中) +``` + +#### 3. `[Header("...")]` —— Inspector 分组标签 + +- Unity 会把 Inspector 字段按 `[Header]` 分组,加上加粗标题。 +- 让 Inspector 面板更有条理: + +``` +┌─ Player (Script) ──────────────┐ +│ Script Player │ +│ │ +│ ── Movement details ── │ ← [Header("Movement details")] +│ Move Speed 4.58 │ +│ Jump Force 12 │ +│ │ +│ ── Collision details ── │ ← [Header("Collision details")] +│ Ground Check Distance 1.5 │ +│ What Is Ground Ground ▾ │ +└────────────────────────────────┘ +``` + +#### 4. `LayerMask` —— 层级过滤 + +- `LayerMask whatIsGround` 在 Inspector 中显示为下拉菜单,可以选择哪些 Layer 算作"地面"。 +- 射线只会检测被选中的层,忽略其他层(玩家自身、敌人等)。 +- **必须设置:** 给地面物体分配一个 Layer(如"Ground"),然后在 Player 的 `whatIsGround` 中勾选它。 + +#### 5. `OnDrawGizmos()` —— Scene 视图可视化调试 + +- `Gizmos.DrawLine(起点, 终点)` 在 Scene 视图中画线,方便调试射线位置。 +- 只在编辑器 Scene 视图可见,游戏运行时不会显示。 +- 当前画了一条向下的红线,直观看到 `groundCheckDistance` 的长度是否合适。 + +#### 6. ⚠️ 注意事项 + +- `using Unity.VisualScripting;` 是多余的引用,当前代码并未使用 Visual Scripting 功能。可以安全删除,不影响编译但保持代码整洁。 +- `jump()` 中 `if(isGrounded)` 后面没有花括号 —— 只有一行代码时可以省略 `{}`,但建议养成始终加括号的习惯,避免后续扩展时出错。 + +#### 7. `Vector2.down` 快捷向量 + +| 写法 | 等价于 | 含义 | +|---|---|---| +| `Vector2.up` | `(0, 1)` | 上 | +| `Vector2.down` | `(0, -1)` | 下 | +| `Vector2.left` | `(-1, 0)` | 左 | +| `Vector2.right` | `(1, 0)` | 右 | +| `Vector2.zero` | `(0, 0)` | 零向量 | +| `Vector2.one` | `(1, 1)` | 单位向量 | + +#### 8. 当前架构图(更新版) + +``` +Player (MonoBehaviour) +├── Awake() +│ ├── rb = GetComponent() +│ └── anim = GetComponentInChildren() +│ +├── Update() +│ ├── HandleCollision() → Raycast 向下 → isGrounded +│ ├── HandleInput() → 读取按键 +│ ├── HandleMovement() → 设置 velocity +│ ├── HandleAnimations() → 驱动动画 +│ └── HandleFlip() → 自动转向 +│ +└── OnDrawGizmos() → Scene 视图画射线(仅编辑器) +```