diff --git a/Assets/Animation.meta b/Assets/Animation.meta new file mode 100644 index 0000000..c270a7e --- /dev/null +++ b/Assets/Animation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 511a5b20b98a6004f901afc9576f575d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animation/Idle.anim b/Assets/Animation/Idle.anim new file mode 100644 index 0000000..a5d3c2d --- /dev/null +++ b/Assets/Animation/Idle.anim @@ -0,0 +1,72 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Idle + 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: 21300000, guid: a0177f7cf2befc04eb7ca47263315dea, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: 21300000, guid: a0177f7cf2befc04eb7ca47263315dea, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.016666668 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 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/Animation/Idle.anim.meta b/Assets/Animation/Idle.anim.meta new file mode 100644 index 0000000..c2de918 --- /dev/null +++ b/Assets/Animation/Idle.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 62e9ec8b785e0ce4f94127860739757e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animation/P_Jump01.controller b/Assets/Animation/P_Jump01.controller new file mode 100644 index 0000000..e986d4a --- /dev/null +++ b/Assets/Animation/P_Jump01.controller @@ -0,0 +1,101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: P_Jump01 + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 5087966113426813579} + 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!1102 &1751970825864563944 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: playerCollapse + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 209c313f53311b4409536aa8483007b1, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &3889940406762402970 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: playerJump + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: e6b6022ef097c7d4a8b549c4958c685f, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &5087966113426813579 +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: 3889940406762402970} + m_Position: {x: 390, y: 0, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1751970825864563944} + m_Position: {x: 400, y: 120, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 3889940406762402970} diff --git a/Assets/Animation/P_Jump01.controller.meta b/Assets/Animation/P_Jump01.controller.meta new file mode 100644 index 0000000..27cae58 --- /dev/null +++ b/Assets/Animation/P_Jump01.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e8bb846578eade14a9f225e9b74fae04 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animation/P_Run01.controller b/Assets/Animation/P_Run01.controller new file mode 100644 index 0000000..cbf294a --- /dev/null +++ b/Assets/Animation/P_Run01.controller @@ -0,0 +1,785 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1101 &-8887048208536149529 +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: isBreathing + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 7407206800022927606} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.87603307 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &-7791830181728469290 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: playerBreathe + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -7488267733714743731} + - {fileID: -8887048208536149529} + 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: 9906eb413e1c7ea408eb58373c4f6849, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &-7527175649193117498 +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: isRunning + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 2812304599173119741} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &-7488267733714743731 +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: isRunning + m_EventTreshold: 0 + - m_ConditionMode: 2 + m_ConditionEvent: isBreathing + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 2812304599173119741} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.87603307 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &-6931366318326925076 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: playerComfort + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -3827997299050267288} + - {fileID: 7425888770274749417} + - {fileID: 6273271730382827821} + 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: 686e47b148fa67147a128f696533db4a, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &-6059084907828803585 +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: isJumping + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -5449330869365902308} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &-5449330869365902308 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: playerJump + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 3261478500395500566} + 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: e6b6022ef097c7d4a8b549c4958c685f, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &-4102986293290182701 +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: isRunning + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 7407206800022927606} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.625 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &-3827997299050267288 +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: isComforting + m_EventTreshold: 0 + - m_ConditionMode: 1 + m_ConditionEvent: isRunning + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 2812304599173119741} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &-3395307691423672760 +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: isJumping + m_EventTreshold: 0 + - m_ConditionMode: 2 + m_ConditionEvent: isRunning + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -5449330869365902308} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.625 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &-2011048030932081128 +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: isBreathing + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -7791830181728469290} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.625 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &-1210443090960147805 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: playerCollapse + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 7973517625427532113} + 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: 209c313f53311b4409536aa8483007b1, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: P_Run01 + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: isRunning + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: isJumping + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: isCollapsed + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: isComforting + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: isBreathing + 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: 1133075258220173683} + 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 &4559969009938884 +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: isComforting + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -6931366318326925076} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &387827888377437119 +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: isRunning + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 2812304599173119741} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1107 &1133075258220173683 +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: 2812304599173119741} + m_Position: {x: 80, y: -200, z: 0} + - serializedVersion: 1 + m_State: {fileID: 7407206800022927606} + m_Position: {x: 490, y: 540, z: 0} + - serializedVersion: 1 + m_State: {fileID: -5449330869365902308} + m_Position: {x: 1050, y: -290, z: 0} + - serializedVersion: 1 + m_State: {fileID: -1210443090960147805} + m_Position: {x: -150, y: 20, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1432172614692963126} + m_Position: {x: 810, y: -40, z: 0} + - serializedVersion: 1 + m_State: {fileID: -6931366318326925076} + m_Position: {x: 440, y: 0, z: 0} + - serializedVersion: 1 + m_State: {fileID: -7791830181728469290} + m_Position: {x: 730, y: -350, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: -140, y: -150, z: 0} + m_EntryPosition: {x: -130, y: 170, z: 0} + m_ExitPosition: {x: 910, y: 310, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 7407206800022927606} +--- !u!1101 &1384036217603801163 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 7407206800022927606} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &1432172614692963126 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: playerLand + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1384036217603801163} + - {fileID: 387827888377437119} + 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: e6790a49130e35341abb5ef6e2108a18, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &2812304599173119741 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Player run + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -4102986293290182701} + - {fileID: -3395307691423672760} + - {fileID: 6568659558143200960} + - {fileID: 4314080532179416004} + - {fileID: -2011048030932081128} + 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: 3b475a102a43ca846bc69cd743559260, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &3261478500395500566 +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: isJumping + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1432172614692963126} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.7692308 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &4314080532179416004 +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: isRunning + m_EventTreshold: 0 + - m_ConditionMode: 1 + m_ConditionEvent: isComforting + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -6931366318326925076} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.625 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &5209798431000028017 +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: isCollapsed + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -1210443090960147805} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &6107627242807912661 +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: isBreathing + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -7791830181728469290} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &6273271730382827821 +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: isComforting + m_EventTreshold: 0 + - m_ConditionMode: 1 + m_ConditionEvent: isCollapsed + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -1210443090960147805} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &6568659558143200960 +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: isRunning + m_EventTreshold: 0 + - m_ConditionMode: 1 + m_ConditionEvent: isCollapsed + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -1210443090960147805} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.625 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &7407206800022927606 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Idle + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -7527175649193117498} + - {fileID: -6059084907828803585} + - {fileID: 5209798431000028017} + - {fileID: 4559969009938884} + - {fileID: 6107627242807912661} + 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: 62e9ec8b785e0ce4f94127860739757e, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &7425888770274749417 +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: isComforting + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 7407206800022927606} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &7973517625427532113 +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: isCollapsed + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 7407206800022927606} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.8148148 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 diff --git a/Assets/Animation/P_Run01.controller.meta b/Assets/Animation/P_Run01.controller.meta new file mode 100644 index 0000000..c649590 --- /dev/null +++ b/Assets/Animation/P_Run01.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 86632cb6b3835a44e87fb6f039478d61 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animation/Player run.anim b/Assets/Animation/Player run.anim new file mode 100644 index 0000000..1552086 --- /dev/null +++ b/Assets/Animation/Player run.anim @@ -0,0 +1,84 @@ +%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: Player run + 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: 21300000, guid: c28a83d936216af40976803e59feffac, type: 3} + - time: 0.083333336 + value: {fileID: 21300000, guid: 6ad7e6d4b207cab48877be0ba168fa6f, type: 3} + - time: 0.25 + value: {fileID: 21300000, guid: 1b0e7b3ae0609bd4294486ea6b2a517a, type: 3} + - time: 0.41666666 + value: {fileID: 21300000, guid: 9961952e457621e4e9b40041f3e24798, type: 3} + - time: 0.5833333 + value: {fileID: 21300000, guid: c28a83d936216af40976803e59feffac, 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: 21300000, guid: c28a83d936216af40976803e59feffac, type: 3} + - {fileID: 21300000, guid: 6ad7e6d4b207cab48877be0ba168fa6f, type: 3} + - {fileID: 21300000, guid: 1b0e7b3ae0609bd4294486ea6b2a517a, type: 3} + - {fileID: 21300000, guid: 9961952e457621e4e9b40041f3e24798, type: 3} + - {fileID: 21300000, guid: c28a83d936216af40976803e59feffac, 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/Animation/Player run.anim.meta b/Assets/Animation/Player run.anim.meta new file mode 100644 index 0000000..52f2b60 --- /dev/null +++ b/Assets/Animation/Player run.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b475a102a43ca846bc69cd743559260 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animation/playerBreathe.anim b/Assets/Animation/playerBreathe.anim new file mode 100644 index 0000000..9c346d9 --- /dev/null +++ b/Assets/Animation/playerBreathe.anim @@ -0,0 +1,78 @@ +%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: playerBreathe + 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: 21300000, guid: a0d876d49e900c14dac119b12a3be7ef, type: 3} + - time: 1 + value: {fileID: 21300000, guid: edd9cc55d0929ea4a86606043cf89959, type: 3} + - time: 2 + value: {fileID: 21300000, guid: a0d876d49e900c14dac119b12a3be7ef, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: 21300000, guid: a0d876d49e900c14dac119b12a3be7ef, type: 3} + - {fileID: 21300000, guid: edd9cc55d0929ea4a86606043cf89959, type: 3} + - {fileID: 21300000, guid: a0d876d49e900c14dac119b12a3be7ef, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 2.0166667 + 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/Animation/playerBreathe.anim.meta b/Assets/Animation/playerBreathe.anim.meta new file mode 100644 index 0000000..08c553c --- /dev/null +++ b/Assets/Animation/playerBreathe.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9906eb413e1c7ea408eb58373c4f6849 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animation/playerCollapse.anim b/Assets/Animation/playerCollapse.anim new file mode 100644 index 0000000..6cd27e2 --- /dev/null +++ b/Assets/Animation/playerCollapse.anim @@ -0,0 +1,81 @@ +%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: playerCollapse + 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: 21300000, guid: 85409be240eecf64f8fb928970afb960, type: 3} + - time: 0.5 + value: {fileID: 21300000, guid: 581c52964316e224893ae68157f22eb8, type: 3} + - time: 0.8333333 + value: {fileID: 21300000, guid: 27e191cf28da8c04183b07447c873330, type: 3} + - time: 1.3333334 + value: {fileID: 21300000, guid: 27e191cf28da8c04183b07447c873330, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: 21300000, guid: 85409be240eecf64f8fb928970afb960, type: 3} + - {fileID: 21300000, guid: 581c52964316e224893ae68157f22eb8, type: 3} + - {fileID: 21300000, guid: 27e191cf28da8c04183b07447c873330, type: 3} + - {fileID: 21300000, guid: 27e191cf28da8c04183b07447c873330, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1.35 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Animation/playerCollapse.anim.meta b/Assets/Animation/playerCollapse.anim.meta new file mode 100644 index 0000000..34f303b --- /dev/null +++ b/Assets/Animation/playerCollapse.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 209c313f53311b4409536aa8483007b1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animation/playerComfort.anim b/Assets/Animation/playerComfort.anim new file mode 100644 index 0000000..2cffcb7 --- /dev/null +++ b/Assets/Animation/playerComfort.anim @@ -0,0 +1,72 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: playerComfort + 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: 21300000, guid: 46048d4e5f5b08049aa72ac0d78d1d82, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: 21300000, guid: 46048d4e5f5b08049aa72ac0d78d1d82, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.016666668 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 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/Animation/playerComfort.anim.meta b/Assets/Animation/playerComfort.anim.meta new file mode 100644 index 0000000..f2da01c --- /dev/null +++ b/Assets/Animation/playerComfort.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 686e47b148fa67147a128f696533db4a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animation/playerJump.anim b/Assets/Animation/playerJump.anim new file mode 100644 index 0000000..92e082b --- /dev/null +++ b/Assets/Animation/playerJump.anim @@ -0,0 +1,81 @@ +%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: playerJump + 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: 21300000, guid: d40c38a8443b44449a4550e567795b7a, type: 3} + - time: 0.41666666 + value: {fileID: 21300000, guid: 3efb7301de72a8748b671d881f5b4595, type: 3} + - time: 0.6666667 + value: {fileID: 21300000, guid: e338908a3351d6c46ac1a1a0477c1577, type: 3} + - time: 1 + value: {fileID: 21300000, guid: e338908a3351d6c46ac1a1a0477c1577, 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: 21300000, guid: d40c38a8443b44449a4550e567795b7a, type: 3} + - {fileID: 21300000, guid: 3efb7301de72a8748b671d881f5b4595, type: 3} + - {fileID: 21300000, guid: e338908a3351d6c46ac1a1a0477c1577, type: 3} + - {fileID: 21300000, guid: e338908a3351d6c46ac1a1a0477c1577, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1.0833334 + 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/Animation/playerJump.anim.meta b/Assets/Animation/playerJump.anim.meta new file mode 100644 index 0000000..5b4b089 --- /dev/null +++ b/Assets/Animation/playerJump.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6b6022ef097c7d4a8b549c4958c685f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animation/playerLand.anim b/Assets/Animation/playerLand.anim new file mode 100644 index 0000000..ba92472 --- /dev/null +++ b/Assets/Animation/playerLand.anim @@ -0,0 +1,75 @@ +%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: playerLand + 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: 21300000, guid: 5ebe788d8b261e141a5034024b2d7061, type: 3} + - time: 0.033333335 + value: {fileID: 21300000, guid: 5ebe788d8b261e141a5034024b2d7061, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: 21300000, guid: 5ebe788d8b261e141a5034024b2d7061, type: 3} + - {fileID: 21300000, guid: 5ebe788d8b261e141a5034024b2d7061, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.050000004 + 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/Animation/playerLand.anim.meta b/Assets/Animation/playerLand.anim.meta new file mode 100644 index 0000000..b7de2ed --- /dev/null +++ b/Assets/Animation/playerLand.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6790a49130e35341abb5ef6e2108a18 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/LeJust Border.aseprite.meta b/Assets/Art/LeJust Border.aseprite.meta index bef2f4a..efd7c4b 100644 --- a/Assets/Art/LeJust Border.aseprite.meta +++ b/Assets/Art/LeJust Border.aseprite.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1fd9e2c9c5170344885cb344961b782d +guid: 1a47a116da10fa0439e29548c7eea4de ScriptedImporter: internalIDToNameTable: [] externalObjects: {} @@ -139,7 +139,7 @@ ScriptedImporter: y: 4 width: 486 height: 548 - spriteID: 47ea8d7442aab414d9e5d842e0529355 + spriteID: 14faf1dcf57c25449973184474f94dec spriteBone: [] spriteOutline: [] vertices: [] @@ -171,7 +171,7 @@ ScriptedImporter: y: 14 width: 486 height: 548 - spriteId: 47ea8d7442aab414d9e5d842e0529355 + spriteId: 14faf1dcf57c25449973184474f94dec linkedCells: [] tileCells: [] tileSetIndex: 0 diff --git a/Assets/Art/P1.aseprite.meta b/Assets/Art/P1.aseprite.meta new file mode 100644 index 0000000..355b3c3 --- /dev/null +++ b/Assets/Art/P1.aseprite.meta @@ -0,0 +1,185 @@ +fileFormatVersion: 2 +guid: d91113864baf56a4d9f44345869b14e3 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 62a9f0aa5b59740cfbadc7e5f9823bb0, type: 3} + importerVersion: 2 + textureImporterSettings: + alphaSource: 1 + mipMapMode: 0 + enableMipMap: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + convertToNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + swizzle: 50462976 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + nPOTScale: 1 + sRGBTexture: 1 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 0 + flipbookColumns: 0 + ignorePngGamma: 0 + cookieMode: 0 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + normalMap: 0 + textureFormat: 0 + maxTextureSize: 0 + lightmap: 0 + compressionQuality: 0 + linearTexture: 0 + grayScaleToAlpha: 0 + rGBM: 0 + cubemapConvolutionSteps: 0 + cubemapConvolutionExponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + previousAsepriteImporterSettings: + fileImportMode: 1 + importHiddenLayers: 0 + layerImportMode: 1 + defaultPivotSpace: 0 + defaultPivotAlignment: 7 + customPivotPosition: {x: 0.5, y: 0.5} + mosaicPadding: 4 + spritePadding: 0 + generateModelPrefab: 1 + generateAnimationClips: 1 + addSortingGroup: 1 + addShadowCasters: 0 + generateIndividualEvents: 1 + generateSpriteAtlas: 1 + asepriteImporterSettings: + fileImportMode: 1 + importHiddenLayers: 0 + layerImportMode: 1 + defaultPivotSpace: 0 + defaultPivotAlignment: 7 + customPivotPosition: {x: 0.5, y: 0.5} + mosaicPadding: 4 + spritePadding: 0 + generateModelPrefab: 1 + generateAnimationClips: 1 + addSortingGroup: 1 + addShadowCasters: 0 + generateIndividualEvents: 1 + generateSpriteAtlas: 1 + importFileNodeState: 1 + platformSettingsDirtyTick: 0 + textureAssetName: + singleSpriteImportData: + - name: + originalName: + pivot: {x: 0, y: 0} + alignment: 0 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + spriteID: + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 0, y: 0} + animatedSpriteImportData: + - name: P1 + originalName: + pivot: {x: 0.5, y: 0} + alignment: 9 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 4 + y: 4 + width: 64 + height: 63 + spriteID: 0d281041b08487f4ea921e726d259b18 + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 4, y: 4} + spriteSheetImportData: [] + tileSetImportData: [] + asepriteLayers: + - layerIndex: 0 + uuid: + value0: 2827728217 + value1: 0 + value2: 0 + value3: 0 + guid: 0 + name: P1 + layerFlags: 0 + layerType: 0 + blendMode: 0 + cells: + - name: P1 + frameIndex: 0 + additiveSortOrder: 0 + cellRect: + x: 0 + y: 0 + width: 64 + height: 63 + spriteId: 0d281041b08487f4ea921e726d259b18 + linkedCells: [] + tileCells: [] + tileSetIndex: 0 + parentIndex: -1 + tileSets: [] + platformSettings: [] + generatePhysicsShape: 0 + secondarySpriteTextures: [] + spritePackingTag: + canvasSize: {x: 64, y: 64} + previousTextureSize: {x: 128, y: 128} diff --git a/Assets/Art/P2.aseprite.meta b/Assets/Art/P2.aseprite.meta new file mode 100644 index 0000000..1c473a7 --- /dev/null +++ b/Assets/Art/P2.aseprite.meta @@ -0,0 +1,185 @@ +fileFormatVersion: 2 +guid: b6b58e4cbdfd34248842b1a2fc433101 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 62a9f0aa5b59740cfbadc7e5f9823bb0, type: 3} + importerVersion: 2 + textureImporterSettings: + alphaSource: 1 + mipMapMode: 0 + enableMipMap: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + convertToNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + swizzle: 50462976 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + nPOTScale: 1 + sRGBTexture: 1 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 0 + flipbookColumns: 0 + ignorePngGamma: 0 + cookieMode: 0 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + normalMap: 0 + textureFormat: 0 + maxTextureSize: 0 + lightmap: 0 + compressionQuality: 0 + linearTexture: 0 + grayScaleToAlpha: 0 + rGBM: 0 + cubemapConvolutionSteps: 0 + cubemapConvolutionExponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + previousAsepriteImporterSettings: + fileImportMode: 1 + importHiddenLayers: 0 + layerImportMode: 1 + defaultPivotSpace: 0 + defaultPivotAlignment: 7 + customPivotPosition: {x: 0.5, y: 0.5} + mosaicPadding: 4 + spritePadding: 0 + generateModelPrefab: 1 + generateAnimationClips: 1 + addSortingGroup: 1 + addShadowCasters: 0 + generateIndividualEvents: 1 + generateSpriteAtlas: 1 + asepriteImporterSettings: + fileImportMode: 1 + importHiddenLayers: 0 + layerImportMode: 1 + defaultPivotSpace: 0 + defaultPivotAlignment: 7 + customPivotPosition: {x: 0.5, y: 0.5} + mosaicPadding: 4 + spritePadding: 0 + generateModelPrefab: 1 + generateAnimationClips: 1 + addSortingGroup: 1 + addShadowCasters: 0 + generateIndividualEvents: 1 + generateSpriteAtlas: 1 + importFileNodeState: 1 + platformSettingsDirtyTick: 0 + textureAssetName: + singleSpriteImportData: + - name: + originalName: + pivot: {x: 0, y: 0} + alignment: 0 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + spriteID: + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 0, y: 0} + animatedSpriteImportData: + - name: P2 + originalName: + pivot: {x: 0.5, y: 0} + alignment: 9 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 4 + y: 4 + width: 64 + height: 63 + spriteID: 969ed9172cdccf945adb6378b75398fb + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 4, y: 4} + spriteSheetImportData: [] + tileSetImportData: [] + asepriteLayers: + - layerIndex: 0 + uuid: + value0: 3231012744 + value1: 0 + value2: 0 + value3: 0 + guid: 0 + name: P2 + layerFlags: 0 + layerType: 0 + blendMode: 0 + cells: + - name: P2 + frameIndex: 0 + additiveSortOrder: 0 + cellRect: + x: 0 + y: 0 + width: 64 + height: 63 + spriteId: 969ed9172cdccf945adb6378b75398fb + linkedCells: [] + tileCells: [] + tileSetIndex: 0 + parentIndex: -1 + tileSets: [] + platformSettings: [] + generatePhysicsShape: 0 + secondarySpriteTextures: [] + spritePackingTag: + canvasSize: {x: 64, y: 64} + previousTextureSize: {x: 128, y: 128} diff --git a/Assets/Art/P3.aseprite.meta b/Assets/Art/P3.aseprite.meta new file mode 100644 index 0000000..7400f22 --- /dev/null +++ b/Assets/Art/P3.aseprite.meta @@ -0,0 +1,185 @@ +fileFormatVersion: 2 +guid: b589b22db1c14434db416f964e755749 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 62a9f0aa5b59740cfbadc7e5f9823bb0, type: 3} + importerVersion: 2 + textureImporterSettings: + alphaSource: 1 + mipMapMode: 0 + enableMipMap: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + convertToNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + swizzle: 50462976 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + nPOTScale: 1 + sRGBTexture: 1 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 0 + flipbookColumns: 0 + ignorePngGamma: 0 + cookieMode: 0 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + normalMap: 0 + textureFormat: 0 + maxTextureSize: 0 + lightmap: 0 + compressionQuality: 0 + linearTexture: 0 + grayScaleToAlpha: 0 + rGBM: 0 + cubemapConvolutionSteps: 0 + cubemapConvolutionExponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + previousAsepriteImporterSettings: + fileImportMode: 1 + importHiddenLayers: 0 + layerImportMode: 1 + defaultPivotSpace: 0 + defaultPivotAlignment: 7 + customPivotPosition: {x: 0.5, y: 0.5} + mosaicPadding: 4 + spritePadding: 0 + generateModelPrefab: 1 + generateAnimationClips: 1 + addSortingGroup: 1 + addShadowCasters: 0 + generateIndividualEvents: 1 + generateSpriteAtlas: 1 + asepriteImporterSettings: + fileImportMode: 1 + importHiddenLayers: 0 + layerImportMode: 1 + defaultPivotSpace: 0 + defaultPivotAlignment: 7 + customPivotPosition: {x: 0.5, y: 0.5} + mosaicPadding: 4 + spritePadding: 0 + generateModelPrefab: 1 + generateAnimationClips: 1 + addSortingGroup: 1 + addShadowCasters: 0 + generateIndividualEvents: 1 + generateSpriteAtlas: 1 + importFileNodeState: 1 + platformSettingsDirtyTick: 0 + textureAssetName: + singleSpriteImportData: + - name: + originalName: + pivot: {x: 0, y: 0} + alignment: 0 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + spriteID: + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 0, y: 0} + animatedSpriteImportData: + - name: P3 + originalName: + pivot: {x: 0.52459013, y: 0} + alignment: 9 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 4 + y: 4 + width: 61 + height: 63 + spriteID: b3e47f44275b65544bce589ac9667d76 + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 4, y: 4} + spriteSheetImportData: [] + tileSetImportData: [] + asepriteLayers: + - layerIndex: 0 + uuid: + value0: 1664928803 + value1: 0 + value2: 0 + value3: 0 + guid: 0 + name: P3 + layerFlags: 0 + layerType: 0 + blendMode: 0 + cells: + - name: P3 + frameIndex: 0 + additiveSortOrder: 0 + cellRect: + x: 0 + y: 0 + width: 61 + height: 63 + spriteId: b3e47f44275b65544bce589ac9667d76 + linkedCells: [] + tileCells: [] + tileSetIndex: 0 + parentIndex: -1 + tileSets: [] + platformSettings: [] + generatePhysicsShape: 0 + secondarySpriteTextures: [] + spritePackingTag: + canvasSize: {x: 64, y: 64} + previousTextureSize: {x: 128, y: 128} diff --git a/Assets/Art/P4.aseprite.meta b/Assets/Art/P4.aseprite.meta new file mode 100644 index 0000000..5d70a0d --- /dev/null +++ b/Assets/Art/P4.aseprite.meta @@ -0,0 +1,185 @@ +fileFormatVersion: 2 +guid: f07d92a07f87d6a46b98434ada83a47b +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 62a9f0aa5b59740cfbadc7e5f9823bb0, type: 3} + importerVersion: 2 + textureImporterSettings: + alphaSource: 1 + mipMapMode: 0 + enableMipMap: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + convertToNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + swizzle: 50462976 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + nPOTScale: 1 + sRGBTexture: 1 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 0 + flipbookColumns: 0 + ignorePngGamma: 0 + cookieMode: 0 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + normalMap: 0 + textureFormat: 0 + maxTextureSize: 0 + lightmap: 0 + compressionQuality: 0 + linearTexture: 0 + grayScaleToAlpha: 0 + rGBM: 0 + cubemapConvolutionSteps: 0 + cubemapConvolutionExponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + previousAsepriteImporterSettings: + fileImportMode: 1 + importHiddenLayers: 0 + layerImportMode: 1 + defaultPivotSpace: 0 + defaultPivotAlignment: 7 + customPivotPosition: {x: 0.5, y: 0.5} + mosaicPadding: 4 + spritePadding: 0 + generateModelPrefab: 1 + generateAnimationClips: 1 + addSortingGroup: 1 + addShadowCasters: 0 + generateIndividualEvents: 1 + generateSpriteAtlas: 1 + asepriteImporterSettings: + fileImportMode: 1 + importHiddenLayers: 0 + layerImportMode: 1 + defaultPivotSpace: 0 + defaultPivotAlignment: 7 + customPivotPosition: {x: 0.5, y: 0.5} + mosaicPadding: 4 + spritePadding: 0 + generateModelPrefab: 1 + generateAnimationClips: 1 + addSortingGroup: 1 + addShadowCasters: 0 + generateIndividualEvents: 1 + generateSpriteAtlas: 1 + importFileNodeState: 1 + platformSettingsDirtyTick: 0 + textureAssetName: + singleSpriteImportData: + - name: + originalName: + pivot: {x: 0, y: 0} + alignment: 0 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + spriteID: + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 0, y: 0} + animatedSpriteImportData: + - name: P4 + originalName: + pivot: {x: 0.5, y: 0} + alignment: 9 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 4 + y: 4 + width: 64 + height: 63 + spriteID: 7364bdd82f3577d4985af361262c00eb + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 4, y: 4} + spriteSheetImportData: [] + tileSetImportData: [] + asepriteLayers: + - layerIndex: 0 + uuid: + value0: 2424443690 + value1: 0 + value2: 0 + value3: 0 + guid: 0 + name: P4 + layerFlags: 0 + layerType: 0 + blendMode: 0 + cells: + - name: P4 + frameIndex: 0 + additiveSortOrder: 0 + cellRect: + x: 0 + y: 0 + width: 64 + height: 63 + spriteId: 7364bdd82f3577d4985af361262c00eb + linkedCells: [] + tileCells: [] + tileSetIndex: 0 + parentIndex: -1 + tileSets: [] + platformSettings: [] + generatePhysicsShape: 0 + secondarySpriteTextures: [] + spritePackingTag: + canvasSize: {x: 64, y: 64} + previousTextureSize: {x: 128, y: 128} diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab index 7bf77b5..ac716ea 100644 --- a/Assets/Prefabs/Player.prefab +++ b/Assets/Prefabs/Player.prefab @@ -16,7 +16,7 @@ GameObject: - component: {fileID: 7763498473808654306} - component: {fileID: 3659140714710275197} - component: {fileID: 9133098163257611752} - m_Layer: 0 + m_Layer: 6 m_Name: Player m_TagString: Untagged m_Icon: {fileID: 0} @@ -251,7 +251,7 @@ GameObject: m_Component: - component: {fileID: 5569302833446856119} - component: {fileID: 6635970933810939283} - m_Layer: 0 + m_Layer: 6 m_Name: HoldLocation m_TagString: Untagged m_Icon: {fileID: 0} @@ -267,7 +267,7 @@ Transform: m_GameObject: {fileID: 6898135930931977916} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.248, z: 0} + m_LocalPosition: {x: -0.18, y: 1.58, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] diff --git a/Assets/Prefabs/Treat.prefab b/Assets/Prefabs/Treat.prefab index 4577bf2..7bc8382 100644 --- a/Assets/Prefabs/Treat.prefab +++ b/Assets/Prefabs/Treat.prefab @@ -12,7 +12,7 @@ GameObject: - component: {fileID: 1016927753207964800} - component: {fileID: 2635922278447379203} - component: {fileID: 6828521680597590390} - m_Layer: 0 + m_Layer: 7 m_Name: Treat m_TagString: Interactable m_Icon: {fileID: 0} diff --git a/Assets/Prefabs/Trick.prefab b/Assets/Prefabs/Trick.prefab index ad14675..abc688a 100644 --- a/Assets/Prefabs/Trick.prefab +++ b/Assets/Prefabs/Trick.prefab @@ -184,13 +184,11 @@ MonoBehaviour: targetRefreshInterval: 0.4 consumeDistance: 0.35 wanderInterval: 1.2 - consumeCooldown: 5 + consumeCooldown: 3 trickPrefab: {fileID: 700000005} - avoidPlayerRadius: 1.2 - avoidTrickRadius: 0.8 + avoidPlayerRadius: 0 + avoidTrickRadius: 0 treatSeekWeight: 1 - avoidPlayerWeight: 0.25 - avoidTrickWeight: 0.2 wanderWeight: 0.4 maxTricks: 50 jumpImpulse: 6 @@ -200,3 +198,6 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 4294967295 groundCheckDistance: 0.05 + despawnMinX: -12 + despawnMaxX: 12 + despawnMinY: -10 diff --git a/Assets/Scenes/Experiment.unity b/Assets/Scenes/Experiment.unity index 378ace2..ab6b03d 100644 --- a/Assets/Scenes/Experiment.unity +++ b/Assets/Scenes/Experiment.unity @@ -1481,6 +1481,120 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1063739947 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1063739950} + - component: {fileID: 1063739949} + - component: {fileID: 1063739948} + m_Layer: 0 + m_Name: P_Run01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!95 &1063739948 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1063739947} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 86632cb6b3835a44e87fb6f039478d61, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!212 &1063739949 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1063739947} + 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: 21300000, guid: c28a83d936216af40976803e59feffac, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 2.87, y: 3.58} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_SpriteSortPoint: 0 +--- !u!4 &1063739950 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1063739947} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 8.13, y: 0.17, 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!1 &1118230342 GameObject: m_ObjectHideFlags: 0 @@ -2521,10 +2635,10 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: Assembly-CSharp::Spawner objectToSpawn: {fileID: 700000000, guid: 8bf8957665594a718535d06aba0cdee7, type: 3} - spawnInterval: 3 + spawnInterval: 5 maxAlive: 1 spawnOnStart: 1 - repeatSpawns: 0 + repeatSpawns: 1 --- !u!1 &2100000100 GameObject: m_ObjectHideFlags: 0 @@ -2569,6 +2683,20 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 44f2fea877e8498fa4898917356fb2e6, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!114 &2100000103 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2100000100} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4eb1753179e848ed8662b6f039a33df9, type: 3} + m_Name: + m_EditorClassIdentifier: + spawner: {fileID: 2100000002} + checkInterval: 1 --- !u!1001 &1760117322204329348 PrefabInstance: m_ObjectHideFlags: 0 @@ -2642,6 +2770,58 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 99cce68fc82caea44b5a140697be00a8, type: 3} +--- !u!1 &2200000000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2200000001} + - component: {fileID: 2200000002} + m_Layer: 0 + m_Name: Treat Spawner Center + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2200000001 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200000000} + 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!114 &2200000002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200000000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 14b0bf07aa1abc44a8ebd00cecacd6f4, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Spawner + objectToSpawn: {fileID: 262983251238298495, guid: 80c527a86ad6fc34dbc73ee80c1f2951, type: 3} + spawnInterval: 5 + maxAlive: 0 + spawnOnStart: 1 + repeatSpawns: 1 + launchForce: 4 + launchRandomAngle: 360 + spinSpeed: 180 --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 @@ -2671,3 +2851,5 @@ SceneRoots: - {fileID: 375061916} - {fileID: 2100000001} - {fileID: 2100000101} + - {fileID: 2200000001} + - {fileID: 1063739950} diff --git a/Assets/Scripts/PlayerPickupController.cs b/Assets/Scripts/PlayerPickupController.cs index 6f50eb8..6a869ed 100644 --- a/Assets/Scripts/PlayerPickupController.cs +++ b/Assets/Scripts/PlayerPickupController.cs @@ -12,15 +12,24 @@ public class PlayerPickupController : MonoBehaviour [SerializeField] private string controlSchemeName = ""; [SerializeField] private int gamepadIndex = -1; private bool deviceFilterEnabled; + [SerializeField] private float minThrowSpeed = 6f; + [SerializeField] private float maxThrowSpeed = 20f; + [SerializeField] private float throwChargeTime = 0.75f; + [SerializeField] private float throwUpwardForce = 0f; + [SerializeField] private float throwTriggerThreshold = 0.6f; [Header("Setup")] public Transform holdPoint; // Empty GameObject above head public float pickupRange = 2.0f; private GameObject heldObject; + private PlayerPlatformerController platformerController; + private bool isChargingThrow; + private float throwChargeStartTime; private void OnEnable() { + platformerController = GetComponent(); if (inputActions == null) { Debug.LogError("PlayerPickupController missing InputActionAsset reference.", this); @@ -61,6 +70,7 @@ public class PlayerPickupController : MonoBehaviour } InputSystem.onDeviceChange -= HandleDeviceChange; + platformerController = null; } private void OnInteractPerformed(InputAction.CallbackContext context) @@ -69,13 +79,46 @@ public class PlayerPickupController : MonoBehaviour if(heldObject != null) { Debug.Log("Dropping held object"); - DropObject(); + DropObject(false); return; } TryPickUp(); } + private void Update() + { + if (heldObject == null) + { + return; + } + + if (!heldObject.TryGetComponent(out _)) + { + return; + } + + var gamepad = GetGamepad(); + if (gamepad == null) + { + return; + } + + var triggerValue = gamepad.rightTrigger.ReadValue(); + if (triggerValue >= throwTriggerThreshold) + { + if (!isChargingThrow) + { + isChargingThrow = true; + throwChargeStartTime = Time.time; + } + } + else if (isChargingThrow) + { + DropObject(true); + } + } + void TryPickUp() { // Find all colliders within range @@ -129,17 +172,22 @@ public class PlayerPickupController : MonoBehaviour } } - void DropObject() + void DropObject(bool applyThrow) { // Re-enable physics if (heldObject.TryGetComponent(out Rigidbody2D rb)) { rb.bodyType = RigidbodyType2D.Dynamic; rb.gravityScale = 1; + rb.linearVelocity = Vector2.zero; } if (heldObject.TryGetComponent(out var trick)) { trick.SetCarried(false); + if (applyThrow) + { + trick.OnThrown(); + } } if (heldObject.TryGetComponent(out var playerController)) { @@ -149,12 +197,52 @@ public class PlayerPickupController : MonoBehaviour heldPickup.enabled = true; } } + if (applyThrow && heldObject.TryGetComponent(out Rigidbody2D throwBody)) + { + var direction = 1f; + if (platformerController != null && Mathf.Abs(platformerController.LastMoveX) > 0.01f) + { + direction = Mathf.Sign(platformerController.LastMoveX); + } + var charge01 = 1f; + if (isChargingThrow) + { + var heldTime = Time.time - throwChargeStartTime; + charge01 = Mathf.Clamp01(heldTime / Mathf.Max(0.01f, throwChargeTime)); + } + var throwSpeed = Mathf.Lerp(minThrowSpeed, maxThrowSpeed, charge01); + throwBody.linearVelocity = new Vector2(direction * throwSpeed, 0f); + throwBody.angularVelocity = 0f; + } Collider2D col = heldObject.GetComponent(); if (col != null) col.enabled = true; // Unparent heldObject.transform.SetParent(null); heldObject = null; + isChargingThrow = false; + } + + private Gamepad GetGamepad() + { + if (runtimeActions == null) + { + return null; + } + + var devices = runtimeActions.devices; + if (devices != null) + { + foreach (var device in devices) + { + if (device is Gamepad gamepad) + { + return gamepad; + } + } + } + + return Gamepad.current; } private bool ShouldFilterDevices() diff --git a/Assets/Scripts/PlayerPlatformerController.cs b/Assets/Scripts/PlayerPlatformerController.cs index 2562486..97d4962 100644 --- a/Assets/Scripts/PlayerPlatformerController.cs +++ b/Assets/Scripts/PlayerPlatformerController.cs @@ -22,6 +22,7 @@ public class PlayerPlatformerController : MonoBehaviour private InputActionAsset runtimeActions; private InputAction moveAction; private InputAction jumpAction; + public float LastMoveX { get; private set; } private bool deviceFilterEnabled; private void Awake() @@ -86,6 +87,10 @@ public class PlayerPlatformerController : MonoBehaviour } var input = moveAction.ReadValue(); + if (Mathf.Abs(input.x) > 0.01f) + { + LastMoveX = input.x; + } var velocity = body.linearVelocity; velocity.x = input.x * moveSpeed; body.linearVelocity = velocity; diff --git a/Assets/Scripts/Spawner.cs b/Assets/Scripts/Spawner.cs index 051a10b..4fc23fe 100644 --- a/Assets/Scripts/Spawner.cs +++ b/Assets/Scripts/Spawner.cs @@ -11,6 +11,9 @@ public class Spawner : MonoBehaviour [SerializeField] private int maxAlive = 0; [SerializeField] private bool spawnOnStart = true; [SerializeField] private bool repeatSpawns = true; + [SerializeField] private float launchForce = 0f; + [SerializeField] private float launchRandomAngle = 0f; + [SerializeField] private float spinSpeed = 0f; private readonly List spawned = new List(); @@ -31,6 +34,19 @@ public class Spawner : MonoBehaviour } } + private void Update() + { + if (spinSpeed != 0f) + { + transform.Rotate(0f, 0f, spinSpeed * Time.deltaTime); + } + } + + public void SpawnNow() + { + SpawnOnce(); + } + private IEnumerator SpawnRoutine() { // Infinite loop to keep spawning (can be modified) @@ -66,6 +82,13 @@ public class Spawner : MonoBehaviour var instance = Instantiate(objectToSpawn, transform.position, Quaternion.identity); spawned.Add(instance); + + if (launchForce > 0f && instance.TryGetComponent(out var body)) + { + var angleOffset = launchRandomAngle > 0f ? Random.Range(-launchRandomAngle, launchRandomAngle) : 0f; + var direction = Quaternion.Euler(0f, 0f, angleOffset) * transform.right; + body.AddForce(direction.normalized * launchForce, ForceMode2D.Impulse); + } } private int CountAlive() diff --git a/Assets/Scripts/TrickCollisionManager.cs b/Assets/Scripts/TrickCollisionManager.cs index 621ee01..de5f81e 100644 --- a/Assets/Scripts/TrickCollisionManager.cs +++ b/Assets/Scripts/TrickCollisionManager.cs @@ -2,6 +2,9 @@ using UnityEngine; public class TrickCollisionManager : MonoBehaviour { + [SerializeField] private string trickLayerName = "Trick"; + [SerializeField] private string playerLayerName = "Player"; + [SerializeField] private string treatLayerName = "Treat"; private bool initialized; private void Awake() @@ -16,7 +19,7 @@ public class TrickCollisionManager : MonoBehaviour return; } - var trickLayer = LayerMask.NameToLayer("Trick"); + var trickLayer = LayerMask.NameToLayer(trickLayerName); if (trickLayer == -1) { Debug.LogWarning("Trick layer not found. Create a layer named 'Trick' and assign it to Trick prefab."); @@ -24,6 +27,20 @@ public class TrickCollisionManager : MonoBehaviour } Physics2D.IgnoreLayerCollision(trickLayer, trickLayer, true); + IgnoreLayerPair(trickLayer, playerLayerName); + IgnoreLayerPair(trickLayer, treatLayerName); initialized = true; } + + private void IgnoreLayerPair(int trickLayer, string otherLayerName) + { + var otherLayer = LayerMask.NameToLayer(otherLayerName); + if (otherLayer == -1) + { + Debug.LogWarning($"Layer '{otherLayerName}' not found. Configure it if you want Trick to ignore collisions with it."); + return; + } + + Physics2D.IgnoreLayerCollision(trickLayer, otherLayer, true); + } } diff --git a/Assets/Scripts/TrickController.cs b/Assets/Scripts/TrickController.cs index f8a448f..f1775d2 100644 --- a/Assets/Scripts/TrickController.cs +++ b/Assets/Scripts/TrickController.cs @@ -11,6 +11,7 @@ public class TrickController : MonoBehaviour private static readonly List ActiveTricks = new List(); private static PlayerPlatformerController[] cachedPlayers = Array.Empty(); private static float nextPlayerCacheTime; + public static int ActiveCount => ActiveTricks.Count; [SerializeField] private string treatTag = "Interactable"; [SerializeField] private float moveSpeed = 3.5f; @@ -20,10 +21,7 @@ public class TrickController : MonoBehaviour [SerializeField] private float consumeCooldown = 1.5f; [SerializeField] private TrickController trickPrefab; [SerializeField] private float avoidPlayerRadius = 1.2f; - [SerializeField] private float avoidTrickRadius = 0.8f; [SerializeField] private float treatSeekWeight = 1f; - [SerializeField] private float avoidPlayerWeight = 0.25f; - [SerializeField] private float avoidTrickWeight = 0.2f; [SerializeField] private float wanderWeight = 0.4f; [SerializeField] private int maxTricks = 50; [SerializeField] private float jumpImpulse = 6f; @@ -31,6 +29,10 @@ public class TrickController : MonoBehaviour [SerializeField] private float jumpChancePerSecond = 0.5f; [SerializeField] private LayerMask groundMask = ~0; [SerializeField] private float groundCheckDistance = 0.05f; + [SerializeField] private float despawnMinX = -12f; + [SerializeField] private float despawnMaxX = 12f; + [SerializeField] private float despawnMinY = -10f; + [SerializeField] private float throwControlLockTime = 0.35f; private Rigidbody2D body; private Transform target; @@ -41,6 +43,7 @@ public class TrickController : MonoBehaviour private float nextConsumeTime; private float desiredXVelocity; private float nextJumpTime; + private float movementLockUntil; private void Awake() { @@ -58,6 +61,8 @@ public class TrickController : MonoBehaviour { ActiveTricks.Add(this); } + + nextConsumeTime = Time.time + consumeCooldown; } private void OnDisable() @@ -73,6 +78,13 @@ public class TrickController : MonoBehaviour return; } + var position = transform.position; + if (position.x < despawnMinX || position.x > despawnMaxX || position.y < despawnMinY) + { + Destroy(gameObject); + return; + } + if (Time.time >= nextTargetTime) { target = FindNearestTreat(); @@ -109,6 +121,11 @@ public class TrickController : MonoBehaviour return; } + if (Time.time < movementLockUntil) + { + return; + } + if (!IsGrounded()) { var airborne = body.linearVelocity; @@ -118,29 +135,21 @@ public class TrickController : MonoBehaviour } Vector2 desiredVelocity; - var stopForTreat = false; - var avoidPlayerDirection = GetAvoidPlayerDirection(); - var avoidTrickDirection = GetAvoidTrickDirection(); var hasTarget = target != null; var canConsume = Time.time >= nextConsumeTime; var desiredX = 0f; - if (hasTarget) + if (hasTarget && canConsume) { var direction = ((Vector2)target.position - (Vector2)transform.position).normalized; desiredX += direction.x * treatSeekWeight; - stopForTreat = Vector2.Distance(transform.position, target.position) <= consumeDistance; } else { desiredX += wanderDirection.x * wanderWeight; } - if (!hasTarget || !canConsume) - { - desiredX += avoidPlayerDirection * avoidPlayerWeight; - } - desiredX += avoidTrickDirection * avoidTrickWeight; + // No trick-avoidance bias. if (Mathf.Abs(desiredX) < 0.01f) { @@ -150,12 +159,12 @@ public class TrickController : MonoBehaviour desiredVelocity = new Vector2(Mathf.Clamp(desiredX, -1f, 1f) * moveSpeed, 0f); var velocity = body.linearVelocity; - desiredXVelocity = stopForTreat ? 0f : desiredVelocity.x; + desiredXVelocity = desiredVelocity.x; velocity.x = Mathf.Lerp(velocity.x, desiredXVelocity, 0.25f); body.linearVelocity = velocity; var isMoving = Mathf.Abs(desiredXVelocity) > 0.1f; - TryJump(isMoving); + TryJump(isMoving, desiredXVelocity); } private Transform FindNearestTreat() @@ -219,6 +228,8 @@ public class TrickController : MonoBehaviour } var spawnPosition = hit.transform.position; + hit.enabled = false; + hit.gameObject.tag = "Untagged"; Destroy(hit.gameObject); if (target == hit.transform) { @@ -287,41 +298,8 @@ public class TrickController : MonoBehaviour return Mathf.Sign(origin.x - closest.position.x); } - private float GetAvoidTrickDirection() - { - if (ActiveTricks.Count <= 1) - { - return 0f; - } - Transform closest = null; - var closestDist = float.MaxValue; - var origin = transform.position; - for (var i = 0; i < ActiveTricks.Count; i++) - { - var candidate = ActiveTricks[i]; - if (candidate == null || candidate == this || !candidate.gameObject.activeInHierarchy) - { - continue; - } - - var dist = Vector2.Distance(origin, candidate.transform.position); - if (dist < closestDist) - { - closestDist = dist; - closest = candidate.transform; - } - } - - if (closest == null || closestDist > avoidTrickRadius) - { - return 0f; - } - - return Mathf.Sign(origin.x - closest.position.x); - } - - private void TryJump(bool isMoving) + private void TryJump(bool isMoving, float jumpDirection) { if (!isMoving || Time.time < nextJumpTime) { @@ -341,6 +319,12 @@ public class TrickController : MonoBehaviour var velocity = body.linearVelocity; velocity.y = 0f; + var jumpDir = Mathf.Sign(jumpDirection); + if (jumpDir == 0f) + { + jumpDir = Random.value < 0.5f ? -1f : 1f; + } + velocity.x = jumpDir * moveSpeed; body.linearVelocity = velocity; body.AddForce(Vector2.up * jumpImpulse, ForceMode2D.Impulse); nextJumpTime = Time.time + jumpCooldown; @@ -377,9 +361,32 @@ public class TrickController : MonoBehaviour if (carried) { target = null; + desiredXVelocity = 0f; var velocity = body.linearVelocity; velocity.x = 0f; + velocity.y = 0f; body.linearVelocity = velocity; + nextJumpTime = Time.time + 0.1f; + if (TryGetComponent(out var collider)) + { + collider.enabled = false; + } + } + else + { + var velocity = body.linearVelocity; + velocity.x = 0f; + velocity.y = 0f; + body.linearVelocity = velocity; + if (TryGetComponent(out var collider)) + { + collider.enabled = true; + } } } + + public void OnThrown() + { + movementLockUntil = Time.time + throwControlLockTime; + } } diff --git a/Assets/Scripts/TrickSpawnKeeper.cs b/Assets/Scripts/TrickSpawnKeeper.cs new file mode 100644 index 0000000..cbeb6c0 --- /dev/null +++ b/Assets/Scripts/TrickSpawnKeeper.cs @@ -0,0 +1,27 @@ +using UnityEngine; + +public class TrickSpawnKeeper : MonoBehaviour +{ + [SerializeField] private Spawner spawner; + [SerializeField] private float checkInterval = 1f; + private float nextCheckTime; + + private void Update() + { + if (Time.time < nextCheckTime) + { + return; + } + + nextCheckTime = Time.time + checkInterval; + if (spawner == null) + { + return; + } + + if (TrickController.ActiveCount == 0) + { + spawner.SpawnNow(); + } + } +} diff --git a/Assets/Scripts/TrickSpawnKeeper.cs.meta b/Assets/Scripts/TrickSpawnKeeper.cs.meta new file mode 100644 index 0000000..6fdd91f --- /dev/null +++ b/Assets/Scripts/TrickSpawnKeeper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4eb1753179e848ed8662b6f039a33df9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: