From d7eca3af31b5b17243438895f999d4c39a805f17 Mon Sep 17 00:00:00 2001 From: DPS2004 <10176105+DPS2004@users.noreply.github.com> Date: Thu, 18 Aug 2022 19:28:23 -0400 Subject: [PATCH] add cowbell shake and hand easing --- Assets/Resources/Games/tunnel.prefab | 22 +- .../Sprites/Games/Tunnel/Animations.meta | 8 + .../Tunnel/Animations/Cowbell.controller | 156 ++++++++++ .../Tunnel/Animations/Cowbell.controller.meta | 8 + .../Games/Tunnel/Animations/Shake.anim | 277 ++++++++++++++++++ .../Games/Tunnel/Animations/Shake.anim.meta | 8 + Assets/Scripts/Games/Tunnel/Tunnel.cs | 11 +- 7 files changed, 486 insertions(+), 4 deletions(-) create mode 100644 Assets/Resources/Sprites/Games/Tunnel/Animations.meta create mode 100644 Assets/Resources/Sprites/Games/Tunnel/Animations/Cowbell.controller create mode 100644 Assets/Resources/Sprites/Games/Tunnel/Animations/Cowbell.controller.meta create mode 100644 Assets/Resources/Sprites/Games/Tunnel/Animations/Shake.anim create mode 100644 Assets/Resources/Sprites/Games/Tunnel/Animations/Shake.anim.meta diff --git a/Assets/Resources/Games/tunnel.prefab b/Assets/Resources/Games/tunnel.prefab index bd3590b0..c03ece4e 100644 --- a/Assets/Resources/Games/tunnel.prefab +++ b/Assets/Resources/Games/tunnel.prefab @@ -57,6 +57,7 @@ GameObject: m_Component: - component: {fileID: 4566486539923839763} - component: {fileID: 4999880999856862259} + - component: {fileID: 3427933536187583819} m_Layer: 0 m_Name: Cowbell m_TagString: Untagged @@ -129,6 +130,25 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!95 &3427933536187583819 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 551892326966028107} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 4e16a12fb43efcb42bcaf1d4c013906e, 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 &1048069017443487285 GameObject: m_ObjectHideFlags: 0 @@ -344,7 +364,7 @@ MonoBehaviour: fg: {fileID: 0} bg: {fileID: 0} frontHand: {fileID: 1048069017443487285} - handAnimator: {fileID: 0} + cowbellAnimator: {fileID: 3427933536187583819} handCurve: {fileID: 1548392426751435551} cowbell: {fileID: 0} driverState: 0 diff --git a/Assets/Resources/Sprites/Games/Tunnel/Animations.meta b/Assets/Resources/Sprites/Games/Tunnel/Animations.meta new file mode 100644 index 00000000..c5d5ac23 --- /dev/null +++ b/Assets/Resources/Sprites/Games/Tunnel/Animations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 79dfcd9d5c2c1034b93680eb9ac00a99 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/Tunnel/Animations/Cowbell.controller b/Assets/Resources/Sprites/Games/Tunnel/Animations/Cowbell.controller new file mode 100644 index 00000000..5690fb74 --- /dev/null +++ b/Assets/Resources/Sprites/Games/Tunnel/Animations/Cowbell.controller @@ -0,0 +1,156 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1101 &-6944172190151344698 +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: 2470112088148389147} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 1 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 1 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &-5541921550588990438 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Shake + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -6944172190151344698} + 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: 0b38fc7acbb46bf4aa82b44e425775f7, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &-972722190704787373 +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: bellhit + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -5541921550588990438} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1107 &-278945667835189233 +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: 2470112088148389147} + m_Position: {x: 270, y: 20, z: 0} + - serializedVersion: 1 + m_State: {fileID: -5541921550588990438} + m_Position: {x: 520, y: 20, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: + - {fileID: -972722190704787373} + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 80, y: -140, 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: 2470112088148389147} +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Cowbell + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: bellhit + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 1 + m_Controller: {fileID: 0} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: -278945667835189233} + 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 &2470112088148389147 +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: 0} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Assets/Resources/Sprites/Games/Tunnel/Animations/Cowbell.controller.meta b/Assets/Resources/Sprites/Games/Tunnel/Animations/Cowbell.controller.meta new file mode 100644 index 00000000..30ca9804 --- /dev/null +++ b/Assets/Resources/Sprites/Games/Tunnel/Animations/Cowbell.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4e16a12fb43efcb42bcaf1d4c013906e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/Tunnel/Animations/Shake.anim b/Assets/Resources/Sprites/Games/Tunnel/Animations/Shake.anim new file mode 100644 index 00000000..5beeb4a1 --- /dev/null +++ b/Assets/Resources/Sprites/Games/Tunnel/Animations/Shake.anim @@ -0,0 +1,277 @@ +%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: Shake + 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: 5.6, y: -2.62, z: 0} + inSlope: {x: Infinity, y: 0, z: 0} + outSlope: {x: Infinity, y: 0, z: 0} + 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.05 + value: {x: 5.8, y: -2.62, z: 0} + inSlope: {x: 0, y: 0, z: Infinity} + outSlope: {x: 0, y: 0, 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.1 + value: {x: 5.65, y: -2.62, 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.15 + value: {x: 5.75, y: -2.62, 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.2 + value: {x: 5.72, y: -2.62, 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: [] + 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 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.2 + 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: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 5.6 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.05 + value: 5.8 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.1 + value: 5.65 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.15 + value: 5.75 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.2 + value: 5.72 + 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: -2.62 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.05 + value: -2.62 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.1 + value: -2.62 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.15 + value: -2.62 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.2 + value: -2.62 + 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: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.05 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.1 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.15 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.2 + 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/Tunnel/Animations/Shake.anim.meta b/Assets/Resources/Sprites/Games/Tunnel/Animations/Shake.anim.meta new file mode 100644 index 00000000..3f73fb4c --- /dev/null +++ b/Assets/Resources/Sprites/Games/Tunnel/Animations/Shake.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0b38fc7acbb46bf4aa82b44e425775f7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Games/Tunnel/Tunnel.cs b/Assets/Scripts/Games/Tunnel/Tunnel.cs index 638fffef..c2a57666 100644 --- a/Assets/Scripts/Games/Tunnel/Tunnel.cs +++ b/Assets/Scripts/Games/Tunnel/Tunnel.cs @@ -59,7 +59,7 @@ namespace HeavenStudio.Games [Header("Animators")] - public Animator handAnimator; + public Animator cowbellAnimator; [Header("Curves")] public BezierCurve3D handCurve; @@ -96,14 +96,15 @@ namespace HeavenStudio.Games if (PlayerInput.Pressed()) //&& !IsExpectingInputNow()) { HitCowbell(); - handStart = Conductor.instance.songPositionInBeats; + } //update hand position handProgress = Math.Min(Conductor.instance.songPositionInBeats - handStart, 1); - frontHand.transform.position = handCurve.GetPoint(handProgress); + + frontHand.transform.position = handCurve.GetPoint(EasingFunction.EaseOutQuad(0, 1, handProgress)); } @@ -116,6 +117,10 @@ namespace HeavenStudio.Games public void HitCowbell() { Jukebox.PlayOneShot("count-ins/cowbell"); + + handStart = Conductor.instance.songPositionInBeats; + + cowbellAnimator.Play("Shake",-1,0); } public void StartCowbell(float beat, bool audienceReacting)