diff --git a/Assets/Resources/Games/cropStomp.prefab b/Assets/Resources/Games/cropStomp.prefab index 4bcbebc8..c748da64 100644 --- a/Assets/Resources/Games/cropStomp.prefab +++ b/Assets/Resources/Games/cropStomp.prefab @@ -370,10 +370,7 @@ MonoBehaviour: - {fileID: -4174758508601275437, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} - {fileID: -2961287720435529803, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} - {fileID: 5598513160068558425, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} - moleSprites: - - {fileID: -7342873356196823606, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} - - {fileID: -4112523241890619114, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} - - {fileID: 3862573926363885855, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + moleAnim: {fileID: 0} veggieSprite: {fileID: 8249654647796258422} veggieTrans: {fileID: 1306622253208457060} curve: {fileID: 2637729749686440137} @@ -565,10 +562,7 @@ MonoBehaviour: - {fileID: -4174758508601275437, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} - {fileID: -2961287720435529803, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} - {fileID: 5598513160068558425, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} - moleSprites: - - {fileID: -7342873356196823606, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} - - {fileID: -4112523241890619114, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} - - {fileID: 3862573926363885855, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + moleAnim: {fileID: 2805600228006371650} veggieSprite: {fileID: 7928308337446182332} veggieTrans: {fileID: 5592378564678122777} curve: {fileID: 7648030253694337683} @@ -583,6 +577,7 @@ GameObject: m_Component: - component: {fileID: 1524379417701275016} - component: {fileID: 7928308337446182332} + - component: {fileID: 2805600228006371650} m_Layer: 0 m_Name: Sprite m_TagString: Untagged @@ -655,6 +650,25 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!95 &2805600228006371650 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3829333311673839566} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 7fc5aeec00556a148af1e396e27c0f0b, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 --- !u!1 &3948884045839928685 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole.meta b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole.meta new file mode 100644 index 00000000..4e277ab9 --- /dev/null +++ b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a5d6b98b166b96d45a39b5828c691c93 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Chuckle.anim b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Chuckle.anim new file mode 100644 index 00000000..d2acc085 --- /dev/null +++ b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Chuckle.anim @@ -0,0 +1,220 @@ +%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: Chuckle + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: -0.03, y: 0.12, z: 0} + inSlope: {x: Infinity, y: Infinity, z: Infinity} + outSlope: {x: Infinity, y: Infinity, z: Infinity} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.06666667 + value: {x: -0.03, y: 0.1, z: 0} + inSlope: {x: Infinity, y: Infinity, z: Infinity} + outSlope: {x: Infinity, y: Infinity, z: Infinity} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.11666667 + value: {x: -0.03, y: 0.1, z: 0} + inSlope: {x: Infinity, y: Infinity, z: Infinity} + outSlope: {x: Infinity, y: Infinity, z: Infinity} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 3862573926363885855, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + 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: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: 3862573926363885855, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.11666667 + 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: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.03 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.06666667 + value: -0.03 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.11666667 + value: -0.03 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.12 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.06666667 + value: 0.1 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.11666667 + value: 0.1 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.06666667 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.11666667 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Chuckle.anim.meta b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Chuckle.anim.meta new file mode 100644 index 00000000..44d245eb --- /dev/null +++ b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Chuckle.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 443e0866593c1a7488aeffd297560ca6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Idle.anim b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Idle.anim new file mode 100644 index 00000000..bdcc695c --- /dev/null +++ b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Idle.anim @@ -0,0 +1,71 @@ +%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: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: -7342873356196823606, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + - time: 0.016666668 + value: {fileID: -7342873356196823606, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + 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 + pptrCurveMapping: + - {fileID: -7342873356196823606, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + - {fileID: -7342873356196823606, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.033333335 + 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/Resources/Sprites/Games/CropStomp/Animations/Mole/Idle.anim.meta b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Idle.anim.meta new file mode 100644 index 00000000..1cf761b3 --- /dev/null +++ b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Idle.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2e5dbeb9c695e1249aaaccb3bd155a2a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Mole.controller b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Mole.controller new file mode 100644 index 00000000..15f07c91 --- /dev/null +++ b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Mole.controller @@ -0,0 +1,130 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-6810318928800665881 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Wiggle + 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: e1e18ecb2ff384742b107d8036a06457, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &-1480283546002289990 +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: [] + 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: 2e5dbeb9c695e1249aaaccb3bd155a2a, 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: Mole + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 422639390360719278} + 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!1107 &422639390360719278 +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: -1480283546002289990} + m_Position: {x: 240, y: 120, z: 0} + - serializedVersion: 1 + m_State: {fileID: -6810318928800665881} + m_Position: {x: 240, y: 60, z: 0} + - serializedVersion: 1 + m_State: {fileID: 4206882443258010758} + m_Position: {x: 240, y: 180, 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: -6810318928800665881} +--- !u!1102 &4206882443258010758 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Chuckle + 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: 443e0866593c1a7488aeffd297560ca6, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Mole.controller.meta b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Mole.controller.meta new file mode 100644 index 00000000..f62f2c96 --- /dev/null +++ b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Mole.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7fc5aeec00556a148af1e396e27c0f0b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Wiggle.anim b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Wiggle.anim new file mode 100644 index 00000000..aba2d935 --- /dev/null +++ b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Wiggle.anim @@ -0,0 +1,80 @@ +%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: Wiggle + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: -4112523241890619114, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + - time: 0.1 + value: {fileID: -7342873356196823606, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + - time: 0.23333333 + value: {fileID: -4112523241890619114, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + - time: 0.33333334 + value: {fileID: -7342873356196823606, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + - time: 0.95 + value: {fileID: -7342873356196823606, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + 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 + pptrCurveMapping: + - {fileID: -4112523241890619114, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + - {fileID: -7342873356196823606, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + - {fileID: -4112523241890619114, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + - {fileID: -7342873356196823606, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + - {fileID: -7342873356196823606, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.96666664 + 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/Resources/Sprites/Games/CropStomp/Animations/Mole/Wiggle.anim.meta b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Wiggle.anim.meta new file mode 100644 index 00000000..eed88273 --- /dev/null +++ b/Assets/Resources/Sprites/Games/CropStomp/Animations/Mole/Wiggle.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e1e18ecb2ff384742b107d8036a06457 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Games/CropStomp/CropStomp.cs b/Assets/Scripts/Games/CropStomp/CropStomp.cs index e7613293..b72e3e6a 100644 --- a/Assets/Scripts/Games/CropStomp/CropStomp.cs +++ b/Assets/Scripts/Games/CropStomp/CropStomp.cs @@ -12,6 +12,7 @@ namespace RhythmHeavenMania.Games.CropStomp public class CropStomp : Minigame { const float stepDistance = 2.115f; + public static float[] moleSoundOffsets = new float[]{ 0.134f, 0.05f, 0.061f }; float scrollRate => stepDistance / (Conductor.instance.secPerBeat * 2f / Conductor.instance.musicSource.pitch); float grassWidth; @@ -23,7 +24,7 @@ namespace RhythmHeavenMania.Games.CropStomp private int stepCount; private bool isStepping; - public bool isMarching => marchStartBeat != -1f && Conductor.instance.isPlaying; + public bool isMarching => marchStartBeat != -1f; [NonSerialized] public bool isFlicking; @@ -49,7 +50,7 @@ namespace RhythmHeavenMania.Games.CropStomp instance = this; } - private async void Start() + private void Start() { // Finding grass sprite width for grass scrolling. var grassSprite = grass.sprite; @@ -115,12 +116,31 @@ namespace RhythmHeavenMania.Games.CropStomp } } + List cuedMoleSounds = new List(); private void Update() { - if (!isMarching) + var cond = Conductor.instance; + + if (!cond.isPlaying) return; - var cond = Conductor.instance; + // Mole sounds. + var moleEvents = GameManager.instance.Beatmap.entities.FindAll(m => m.datamodel == "cropStomp/mole"); + for (int i = 0; i < moleEvents.Count; i++) + { + var moleEvent = moleEvents[i]; + var timeToEvent = moleEvent.beat - cond.songPositionInBeats; + if (timeToEvent <= 3f && timeToEvent > 0f && !cuedMoleSounds.Contains(moleEvent)) + { + cuedMoleSounds.Add(moleEvent); + MultiSound.Play(new MultiSound.Sound[] { new MultiSound.Sound("cropStomp/moleNyeh", (moleEvent.beat - 2f) - moleSoundOffsets[0] * Conductor.instance.songBpm / 60f), + new MultiSound.Sound("cropStomp/moleHeh1", (moleEvent.beat - 1.5f) - moleSoundOffsets[1] * Conductor.instance.songBpm / 60f), + new MultiSound.Sound("cropStomp/moleHeh2", (moleEvent.beat - 1f) - moleSoundOffsets[2] * Conductor.instance.songBpm / 60f) }); + } + } + + if (!isMarching) + return; if (cond.ReportBeat(ref newBeat, marchOffset, true)) { diff --git a/Assets/Scripts/Games/CropStomp/Veggie.cs b/Assets/Scripts/Games/CropStomp/Veggie.cs index 9cf720f9..ade62bad 100644 --- a/Assets/Scripts/Games/CropStomp/Veggie.cs +++ b/Assets/Scripts/Games/CropStomp/Veggie.cs @@ -14,7 +14,7 @@ namespace RhythmHeavenMania.Games.CropStomp public bool isMole; public Sprite[] veggieSprites; - public Sprite[] moleSprites; + public Animator moleAnim; public SpriteRenderer veggieSprite; public Transform veggieTrans; public BezierCurve3D curve; @@ -43,7 +43,6 @@ namespace RhythmHeavenMania.Games.CropStomp } else { - veggieSprite.sprite = moleSprites[0]; pickTime = 1.5f; } } @@ -121,6 +120,18 @@ namespace RhythmHeavenMania.Games.CropStomp veggieState = -1; boinked = true; + curve.transform.localScale = Vector3.one; // Return curve to normal size in the case of mole curves. + + var key1 = curve.KeyPoints[0]; + var key1Pos = key1.Position; + key1.Position = new Vector3(key1Pos.x, veggieTrans.position.y, key1Pos.z); + + var key2 = curve.KeyPoints[1]; + var key2Pos = key2.Position; + key2.Position = new Vector3(key2Pos.x, veggieTrans.position.y + 2f, key2Pos.z); + + pickedBeat = cond.songPositionInBeats; + Jukebox.PlayOneShot("miss"); MissedUpdate(); @@ -132,15 +143,36 @@ namespace RhythmHeavenMania.Games.CropStomp } } + bool moleLaughing; private void MissedUpdate() { if (boinked) { + float fallPosition = Conductor.instance.GetPositionFromBeat(pickedBeat, 1f); + fallPosition = Mathf.Clamp(fallPosition, 0, 1); + veggieTrans.position = curve.GetPoint(fallPosition); + if (fallPosition < 1f) + { + var rotSpeed = isMole ? pickedRotationSpeed : -pickedRotationSpeed; + veggieTrans.rotation = Quaternion.Euler(0, 0, veggieTrans.rotation.eulerAngles.z + (rotSpeed * Time.deltaTime)); + } + else + { + veggieTrans.rotation = Quaternion.Euler(0, 0, 180f); + } } else { - + if (isMole && !moleLaughing) + { + var distDiff = transform.position.x - game.farmerTrans.position.x; + if (distDiff > 1.5f) + { + moleAnim.Play("Chuckle", 0, 0); + moleLaughing = true; + } + } } } @@ -192,6 +224,10 @@ namespace RhythmHeavenMania.Games.CropStomp new BeatAction.Action(targetBeat - 0.5f, delegate { Jukebox.PlayOneShotGame("cropStomp/veggieOh"); }) }); } + else + { + moleAnim.Play("Idle", 0, 0); + } var veggieScale = veggieTrans.localScale; veggieTrans.localScale = new Vector3(veggieScale.x * 0.5f, veggieScale.y, veggieScale.z); diff --git a/Assets/Scripts/Games/KarateMan/KarateMan.cs b/Assets/Scripts/Games/KarateMan/KarateMan.cs index 2a754438..14d46470 100644 --- a/Assets/Scripts/Games/KarateMan/KarateMan.cs +++ b/Assets/Scripts/Games/KarateMan/KarateMan.cs @@ -291,6 +291,9 @@ namespace RhythmHeavenMania.Games.KarateMan } } + if (!Conductor.instance.isPlaying) + return; + // Call "hit" voice slightly early to account for sound offset. var hitVoiceEvents = GameManager.instance.Beatmap.entities.FindAll(c => c.datamodel == "karateman/hit3" || c.datamodel == "karateman/hit4"); for (int i = 0; i < hitVoiceEvents.Count; i++) diff --git a/Assets/Scripts/Minigames.cs b/Assets/Scripts/Minigames.cs index f59c8590..03fb780a 100644 --- a/Assets/Scripts/Minigames.cs +++ b/Assets/Scripts/Minigames.cs @@ -358,7 +358,7 @@ namespace RhythmHeavenMania new GameAction("jump tap", delegate { TapTrial.instance.JumpTap(eventCaller.currentEntity.beat); }, 2.0f, false), new GameAction("final jump tap", delegate { TapTrial.instance.FinalJumpTap(eventCaller.currentEntity.beat); }, 2.0f, false), }), - new Minigame("cropStomp", "Crop Stomp \n[WIP don't use]", "BFDEA6", false, false, new List() + new Minigame("cropStomp", "Crop Stomp", "BFDEA6", false, false, new List() { new GameAction("start marching", delegate { CropStomp.instance.StartMarching(eventCaller.currentEntity.beat); }, 2f, false), new GameAction("veggies", delegate { }, 4f, true),