From a96879db8b2a6b6fd27b812b92c9e7abac98c533 Mon Sep 17 00:00:00 2001 From: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Wed, 22 Nov 2023 02:07:35 +0100 Subject: [PATCH] Blue Bear Final Tweaks (#581) * scaled animations + barely + new curves * emotion system revamped * Whiff sound!!! --- Assets/Resources/Games/blueBear.prefab | 485 ++---------------- Assets/Resources/Sfx/games/blueBear/whiff.wav | Bin 0 -> 13600 bytes .../Sfx/games/blueBear/whiff.wav.meta | 22 + Assets/Scripts/Games/BlueBear/BlueBear.cs | 207 +++++--- Assets/Scripts/Games/BlueBear/Treat.cs | 63 ++- Assets/Scripts/Util/AnimationHelpers.cs | 5 + 6 files changed, 244 insertions(+), 538 deletions(-) create mode 100644 Assets/Resources/Sfx/games/blueBear/whiff.wav create mode 100644 Assets/Resources/Sfx/games/blueBear/whiff.wav.meta diff --git a/Assets/Resources/Games/blueBear.prefab b/Assets/Resources/Games/blueBear.prefab index 20ae11370..c51714925 100644 --- a/Assets/Resources/Games/blueBear.prefab +++ b/Assets/Resources/Games/blueBear.prefab @@ -33,62 +33,6 @@ Transform: m_Father: {fileID: 6960831429059082753} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &290228492427971646 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6329961769281807094} - - component: {fileID: 4010886351829930261} - m_Layer: 0 - m_Name: DonutCurve - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6329961769281807094 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 290228492427971646} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 5421637543485503317} - - {fileID: 3691807933677802949} - - {fileID: 3150862288141982050} - m_Father: {fileID: 8746993661413993986} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &4010886351829930261 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 290228492427971646} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 066a41e004f415b4eb74d5e61a2aadbe, type: 3} - m_Name: - m_EditorClassIdentifier: - curveColor: {r: 0, g: 1, b: 0, a: 1} - startPointColor: {r: 1, g: 0, b: 0, a: 1} - endPointColor: {r: 0, g: 0, b: 1, a: 1} - sampling: 25 - keyPoints: - - {fileID: 3229741095474240392} - - {fileID: 5844169753873806744} - - {fileID: 8573860549249418625} - normalizedTime: 0.6 --- !u!1 &471349468795412199 GameObject: m_ObjectHideFlags: 0 @@ -5650,39 +5594,6 @@ Transform: m_Father: {fileID: 5813499711186931250} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2117851015664542161 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8746993661413993986} - m_Layer: 0 - m_Name: Curves - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8746993661413993986 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2117851015664542161} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 6329961769281807094} - - {fileID: 3593119893011264580} - m_Father: {fileID: 5813499711186931250} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &2128961569128384440 GameObject: m_ObjectHideFlags: 0 @@ -5715,7 +5626,7 @@ Transform: - {fileID: 7577381734816330351} - {fileID: 3145709441744219950} m_Father: {fileID: 5813499711186931250} - m_RootOrder: 7 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &435615509351659063 Animator: @@ -5738,54 +5649,6 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 ---- !u!1 &2367708131139839123 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6040988351714367052} - - component: {fileID: 4773903569383290023} - m_Layer: 0 - m_Name: Point 2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6040988351714367052 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2367708131139839123} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5, y: -12.3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3593119893011264580} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &4773903569383290023 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2367708131139839123} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} - m_Name: - m_EditorClassIdentifier: - curve: {fileID: 5500614478733336177} - handleType: 0 - leftHandleLocalPosition: {x: 0.19151115, y: 6.0157824, z: 0} - rightHandleLocalPosition: {x: -0.19151115, y: -6.0157824, z: -0} --- !u!1 &2385043071357490508 GameObject: m_ObjectHideFlags: 0 @@ -6016,7 +5879,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5813499711186931250} - m_RootOrder: 8 + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!212 &8901463518339414129 SpriteRenderer: @@ -6154,54 +6017,6 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 ---- !u!1 &2972698800083633547 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3691807933677802949} - - component: {fileID: 5844169753873806744} - m_Layer: 0 - m_Name: Point 1 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3691807933677802949 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2972698800083633547} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3.2, y: 3.9999998, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6329961769281807094} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &5844169753873806744 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2972698800083633547} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} - m_Name: - m_EditorClassIdentifier: - curve: {fileID: 4010886351829930261} - handleType: 0 - leftHandleLocalPosition: {x: -0.5, y: -0, z: -0} - rightHandleLocalPosition: {x: 0.5, y: 0, z: 0} --- !u!1 &3272805707290525802 GameObject: m_ObjectHideFlags: 0 @@ -6237,7 +6052,7 @@ Transform: - {fileID: 3912340903949694468} - {fileID: 2724047915994653680} m_Father: {fileID: 5813499711186931250} - m_RootOrder: 6 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &1672690672723614704 Animator: @@ -6260,54 +6075,6 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 ---- !u!1 &3386726751787149544 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1189969421379328708} - - component: {fileID: 7051398189816610608} - m_Layer: 0 - m_Name: Point 1 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1189969421379328708 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3386726751787149544} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -3.3230858, y: 14.9, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3593119893011264580} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &7051398189816610608 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3386726751787149544} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} - m_Name: - m_EditorClassIdentifier: - curve: {fileID: 5500614478733336177} - handleType: 0 - leftHandleLocalPosition: {x: 0.5, y: 0, z: 0} - rightHandleLocalPosition: {x: -0.5, y: -0, z: -0} --- !u!1 &3577761986294505711 GameObject: m_ObjectHideFlags: 0 @@ -6522,6 +6289,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: f7dae340f4a85ba44ab2f8cfd4429430, type: 3} m_Name: m_EditorClassIdentifier: + offset: {x: 0, y: 0, z: 0} isCake: 0 startBeat: 0 --- !u!1 &4021263521913631461 @@ -6781,62 +6549,6 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 ---- !u!1 &4732423349660717250 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3593119893011264580} - - component: {fileID: 5500614478733336177} - m_Layer: 0 - m_Name: CakeCurve - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3593119893011264580 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4732423349660717250} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 5019461457677901195} - - {fileID: 1189969421379328708} - - {fileID: 6040988351714367052} - m_Father: {fileID: 8746993661413993986} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &5500614478733336177 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4732423349660717250} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 066a41e004f415b4eb74d5e61a2aadbe, type: 3} - m_Name: - m_EditorClassIdentifier: - curveColor: {r: 0, g: 1, b: 0, a: 1} - startPointColor: {r: 1, g: 0, b: 0, a: 1} - endPointColor: {r: 0, g: 0, b: 1, a: 1} - sampling: 25 - keyPoints: - - {fileID: 5655647647436070703} - - {fileID: 7051398189816610608} - - {fileID: 4773903569383290023} - normalizedTime: 0.75 --- !u!1 &4851098416927797487 GameObject: m_ObjectHideFlags: 0 @@ -7148,54 +6860,6 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 ---- !u!1 &5251011089174362824 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5019461457677901195} - - component: {fileID: 5655647647436070703} - m_Layer: 0 - m_Name: Point 0 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5019461457677901195 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5251011089174362824} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.5, y: -4, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3593119893011264580} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &5655647647436070703 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5251011089174362824} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} - m_Name: - m_EditorClassIdentifier: - curve: {fileID: 5500614478733336177} - handleType: 0 - leftHandleLocalPosition: {x: 1.1635425, y: -13.234132, z: -0} - rightHandleLocalPosition: {x: -1.1635425, y: 13.234132, z: 0} --- !u!1 &5422684780013435000 GameObject: m_ObjectHideFlags: 0 @@ -7535,7 +7199,6 @@ Transform: - {fileID: 716902796083954310} - {fileID: 5011532919799571745} - {fileID: 4768386529512104537} - - {fileID: 8746993661413993986} - {fileID: 5813499711658895220} - {fileID: 1786192994432166401} - {fileID: 5860131706849385657} @@ -7572,8 +7235,43 @@ MonoBehaviour: foodHolder: {fileID: 5011532919799571745} crumbsHolder: {fileID: 4768386529512104537} individualBagHolder: {fileID: 199889193875870520} - donutCurve: {fileID: 4010886351829930261} - cakeCurve: {fileID: 5500614478733336177} + _treatCurves: + - name: Donut + preview: 1 + anchor: {fileID: 0} + positions: + - tag: + pos: {x: 1.496, y: -4.014, z: 0} + target: {fileID: 0} + height: 5 + duration: 2 + useLastRealPos: 0 + values: [] + - tag: + pos: {x: 4.9, y: 0.62, z: 0} + target: {fileID: 0} + height: 0 + duration: 0 + useLastRealPos: 0 + values: [] + - name: Cake + preview: 1 + anchor: {fileID: 0} + positions: + - tag: + pos: {x: -1.498, y: -4.01, z: 0} + target: {fileID: 0} + height: 18 + duration: 3 + useLastRealPos: 0 + values: [] + - tag: + pos: {x: -4.63, y: 0.63, z: 0} + target: {fileID: 0} + height: 0 + duration: 0 + useLastRealPos: 0 + values: [] donutGradient: serializedVersion: 2 key0: {r: 0.92941177, g: 0.69411767, b: 0.23921569, a: 1} @@ -7667,7 +7365,7 @@ Transform: - {fileID: 1065936263090570038} - {fileID: 3325397362945256426} m_Father: {fileID: 5813499711186931250} - m_RootOrder: 5 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &6092762685894244170 Animator: @@ -7787,6 +7485,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: f7dae340f4a85ba44ab2f8cfd4429430, type: 3} m_Name: m_EditorClassIdentifier: + offset: {x: 0, y: 0, z: 0} isCake: 1 startBeat: 0 --- !u!1 &5988159118627703275 @@ -8467,7 +8166,7 @@ Transform: - {fileID: 8086662841372816991} - {fileID: 5542312890775929452} m_Father: {fileID: 5813499711186931250} - m_RootOrder: 9 + m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &920502940108507811 Animator: @@ -8764,54 +8463,6 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 ---- !u!1 &8021092099866450225 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3150862288141982050} - - component: {fileID: 8573860549249418625} - m_Layer: 0 - m_Name: Point 2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3150862288141982050 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8021092099866450225} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5.5, y: -12.1, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6329961769281807094} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &8573860549249418625 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8021092099866450225} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} - m_Name: - m_EditorClassIdentifier: - curve: {fileID: 4010886351829930261} - handleType: 0 - leftHandleLocalPosition: {x: -0.45544052, y: 8.296009, z: 0} - rightHandleLocalPosition: {x: 0.45544052, y: -8.296009, z: -0} --- !u!1 &8074909055883004200 GameObject: m_ObjectHideFlags: 0 @@ -9264,54 +8915,6 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 ---- !u!1 &8671544535564718561 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5421637543485503317} - - component: {fileID: 3229741095474240392} - m_Layer: 0 - m_Name: Point 0 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5421637543485503317 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8671544535564718561} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.5, y: -4, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6329961769281807094} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &3229741095474240392 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8671544535564718561} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} - m_Name: - m_EditorClassIdentifier: - curve: {fileID: 4010886351829930261} - handleType: 0 - leftHandleLocalPosition: {x: -0.29808784, y: -4.615514, z: -0} - rightHandleLocalPosition: {x: 0.29808784, y: 4.615514, z: 0} --- !u!1 &9061361398430418040 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Resources/Sfx/games/blueBear/whiff.wav b/Assets/Resources/Sfx/games/blueBear/whiff.wav new file mode 100644 index 0000000000000000000000000000000000000000..3dec6f93babe95c04af9ac0f4dbb7e9d262fc9d4 GIT binary patch literal 13600 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 literal 0 HcmV?d00001 diff --git a/Assets/Resources/Sfx/games/blueBear/whiff.wav.meta b/Assets/Resources/Sfx/games/blueBear/whiff.wav.meta new file mode 100644 index 000000000..1ccc70674 --- /dev/null +++ b/Assets/Resources/Sfx/games/blueBear/whiff.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 2448776798073114dbaa07b1c4a83cd8 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Games/BlueBear/BlueBear.cs b/Assets/Scripts/Games/BlueBear/BlueBear.cs index 2420c6e4a..db5795390 100644 --- a/Assets/Scripts/Games/BlueBear/BlueBear.cs +++ b/Assets/Scripts/Games/BlueBear/BlueBear.cs @@ -27,13 +27,21 @@ namespace HeavenStudio.Games.Loaders function = delegate { BlueBear.instance.SpawnTreat(eventCaller.currentEntity.beat, true, eventCaller.currentEntity.beat); }, defaultLength = 4, }, - new GameAction("setEmotion", "Set Emotion") + new GameAction("setEmotion", "Emotion") { - function = delegate { var e = eventCaller.currentEntity; BlueBear.instance.SetEmotion(e.beat, e.length, e["type"]); }, - defaultLength = 0.5f, + function = delegate { var e = eventCaller.currentEntity; BlueBear.instance.SetEmotion(e["type"]); }, parameters = new List() { - new Param("type", BlueBear.EmotionType.ClosedEyes, "Type", "Which emotion should the blue bear use?") + new Param("type", BlueBear.EmotionType.ClosedEyes, "Emotion", "Which emotion should the blue bear use?") + } + }, + new GameAction("stretchEmotion", "Long Emotion") + { + defaultLength = 4, + resizable = true, + parameters = new List() + { + new Param("type", BlueBear.EmotionStretchType.LookUp, "Emotion", "Which emotion should the blue bear use?") } }, new GameAction("wind", "Wind") @@ -75,17 +83,21 @@ namespace HeavenStudio.Games { using Jukebox; using Scripts_BlueBear; + public class BlueBear : Minigame { public enum EmotionType { - Neutral, - ClosedEyes, - LookUp, - Smile, - Sad, - InstaSad, - Sigh + Neutral = 0, + ClosedEyes = 1, + Cry = 2, + Sigh = 3 + } + public enum EmotionStretchType + { + LookUp = 0, + Smile = 1, + StartCrying = 2, } public enum StoryType { @@ -117,15 +129,9 @@ namespace HeavenStudio.Games static int rightCrumbAppearThreshold = 15; static int leftCrumbAppearThreshold = 30; static int eatenTreats = 0; - double emotionStartBeat; - float emotionLength; - string emotionAnimName; bool crying; private List _allStoryEvents = new(); - - [Header("Curves")] - public BezierCurve3D donutCurve; - public BezierCurve3D cakeCurve; + [SerializeField] private SuperCurveObject.Path[] _treatCurves; [Header("Gradients")] public Gradient donutGradient; @@ -190,6 +196,31 @@ namespace HeavenStudio.Games new("CtrBearRight", new int[] { IARight, IARight, IARight }, IA_PadRight, IA_TouchRight, IA_BatonRight); + // Editor gizmo to draw trajectories + new void OnDrawGizmos() + { + base.OnDrawGizmos(); + foreach (SuperCurveObject.Path path in _treatCurves) + { + if (path.preview) + { + donutBase.GetComponent().DrawEditorGizmo(path); + } + } + } + + public SuperCurveObject.Path GetPath(string name) + { + foreach (SuperCurveObject.Path path in _treatCurves) + { + if (path.name == name) + { + return path; + } + } + return default(SuperCurveObject.Path); + } + void OnDestroy() { foreach (var evt in scheduledInputs) @@ -254,37 +285,100 @@ namespace HeavenStudio.Games private void Update() { headAndBodyAnim.SetBool("ShouldOpenMouth", foodHolder.childCount != 0); + if (headAndBodyAnim.GetBool("ShouldOpenMouth")) + { + _emotionCancelled = true; + } if (PlayerInput.GetIsAction(InputAction_Left) && !IsExpectingInputNow(InputAction_Left.inputLockCategory)) { + SoundByte.PlayOneShotGame("blueBear/whiff"); Bite(true); } else if (PlayerInput.GetIsAction(InputAction_Right) && !IsExpectingInputNow(InputAction_Right.inputLockCategory)) { + SoundByte.PlayOneShotGame("blueBear/whiff"); Bite(false); } - Conductor cond = Conductor.instance; + UpdateEmotions(); - if (cond.isPlaying && !cond.isPaused) - { - float normalizedBeat = cond.GetPositionFromBeat(emotionStartBeat, emotionLength); - if (normalizedBeat >= 0 && normalizedBeat <= 1f) - { - //headAndBodyAnim.DoNormalizedAnimation(emotionAnimName, normalizedBeat); - } - } UpdateStory(); + headAndBodyAnim.SetScaledAnimationSpeed(); + bagsAnim.SetScaledAnimationSpeed(); + cakeBagAnim.SetScaledAnimationSpeed(); + donutBagAnim.SetScaledAnimationSpeed(); + windAnim.SetScaledAnimationSpeed(); + } + + private bool _emotionCancelled = false; + private int _emotionIndex = 0; + private List _allEmotionsStretch = new(); + private EmotionStretchType _lastEmotion = EmotionStretchType.LookUp; + + private void UpdateEmotions() + { + var cond = Conductor.instance; + if (_allEmotionsStretch.Count == 0 || _emotionIndex >= _allEmotionsStretch.Count) return; + + var beat = cond.songPositionInBeatsAsDouble; + + var e = _allEmotionsStretch[_emotionIndex]; + + if (beat > e.beat + e.length) + { + _emotionIndex++; + _lastEmotion = (EmotionStretchType)_allEmotionsStretch[_emotionIndex - 1]["type"]; + crying = _lastEmotion == EmotionStretchType.StartCrying; + _emotionCancelled = false; + UpdateEmotions(); + return; + } + + if (beat >= e.beat && beat < e.beat + e.length && !_emotionCancelled) + { + _lastEmotion = (EmotionStretchType)e["type"]; + crying = _lastEmotion == EmotionStretchType.StartCrying; + float normalizedBeat = cond.GetPositionFromBeat(e.beat, e.length); + + string animName = (EmotionStretchType)e["type"] switch + { + EmotionStretchType.LookUp => "OpenEyes", + EmotionStretchType.Smile => "Smile", + EmotionStretchType.StartCrying => "Sad", + _ => throw new NotImplementedException(), + }; + headAndBodyAnim.DoNormalizedAnimation(animName, normalizedBeat); + } + } + + private void HandleEmotions(double beat) + { + _allEmotionsStretch = EventCaller.GetAllInGameManagerList("blueBear", new string[] { "stretchEmotion" }); + if (_allEmotionsStretch.Count == 0) return; + UpdateEmotions(); + var allEmosBeforeBeat = EventCaller.GetAllInGameManagerList("blueBear", new string[] { "stretchEmotion" }).FindAll(x => x.beat < beat); + + if ((EmotionStretchType)allEmosBeforeBeat[^1]["type"] == EmotionStretchType.StartCrying) + { + headAndBodyAnim.DoScaledAnimationAsync("CryIdle", 0.5f); + } + else if ((EmotionStretchType)allEmosBeforeBeat[^1]["type"] == EmotionStretchType.Smile) + { + headAndBodyAnim.DoScaledAnimationAsync("SmileIdle", 0.5f); + } } public override void OnPlay(double beat) { HandleTreatsOnStart(beat); + HandleEmotions(beat); } public override void OnGameSwitch(double beat) { HandleTreatsOnStart(beat); + HandleEmotions(beat); } private void HandleTreatsOnStart(double gameswitchBeat) @@ -302,18 +396,19 @@ namespace HeavenStudio.Games public void Wind() { - windAnim.Play("Wind", 0, 0); + windAnim.DoScaledAnimationAsync("Wind", 0.5f); } public void Bite(bool left) { + _emotionCancelled = true; if (crying) { - headAndBodyAnim.Play(left ? "CryBiteL" : "CryBiteR", 0, 0); + headAndBodyAnim.DoScaledAnimationAsync(left ? "CryBiteL" : "CryBiteR", 0.5f); } else { - headAndBodyAnim.Play(left ? "BiteL" : "BiteR", 0, 0); + headAndBodyAnim.DoScaledAnimationAsync(left ? "BiteL" : "BiteR", 0.5f); } } @@ -358,58 +453,31 @@ namespace HeavenStudio.Games if (noDonutSquash && noCakeSquash) { squashing = false; - bagsAnim.Play("Idle", 0, 0); + bagsAnim.DoScaledAnimationAsync("Idle", 0.5f); } } } - public void SetEmotion(double beat, float length, int emotion) + public void SetEmotion(int emotion) { + _emotionCancelled = true; switch (emotion) { case (int)EmotionType.Neutral: - if (emotionAnimName == "Smile") - { - headAndBodyAnim.Play("StopSmile", 0, 0); - emotionAnimName = ""; - } - else - { - headAndBodyAnim.Play("Idle", 0, 0); - } + //check if smiling then play "StopSmile" + headAndBodyAnim.DoScaledAnimationAsync("Idle", 0.5f); crying = false; break; case (int)EmotionType.ClosedEyes: - headAndBodyAnim.Play("EyesClosed", 0, 0); + headAndBodyAnim.DoScaledAnimationAsync("EyesClosed", 0.5f); crying = false; break; - case (int)EmotionType.LookUp: - emotionStartBeat = beat; - emotionLength = length; - emotionAnimName = "OpenEyes"; - headAndBodyAnim.Play(emotionAnimName, 0, 0); - crying = false; - break; - case (int)EmotionType.Smile: - emotionStartBeat = beat; - emotionLength = length; - emotionAnimName = "Smile"; - headAndBodyAnim.Play(emotionAnimName, 0, 0); - crying = false; - break; - case (int)EmotionType.Sad: - emotionStartBeat = beat; - emotionLength = length; - emotionAnimName = "Sad"; - headAndBodyAnim.Play(emotionAnimName, 0, 0); - crying = true; - break; - case (int)EmotionType.InstaSad: - headAndBodyAnim.Play("CryIdle", 0, 0); + case (int)EmotionType.Cry: + headAndBodyAnim.DoScaledAnimationAsync("CryIdle", 0.5f); crying = true; break; case (int)EmotionType.Sigh: - headAndBodyAnim.Play("Sigh", 0, 0); + headAndBodyAnim.DoScaledAnimationAsync("Sigh", 0.5f); crying = false; break; default: @@ -424,7 +492,6 @@ namespace HeavenStudio.Games var treatComp = newTreat.GetComponent(); treatComp.startBeat = beat; - treatComp.curve = isCake ? cakeCurve : donutCurve; newTreat.SetActive(true); @@ -439,17 +506,17 @@ namespace HeavenStudio.Games public void SquashBag(bool isCake) { squashing = true; - bagsAnim.Play("Squashing", 0, 0); + bagsAnim.DoScaledAnimationAsync("Squashing", 0.5f); individualBagHolder.SetActive(true); if (isCake) { - cakeBagAnim.Play("CakeSquash", 0, 0); + cakeBagAnim.DoScaledAnimationAsync("CakeSquash", 0.5f); } else { - donutBagAnim.Play("DonutSquash", 0, 0); + donutBagAnim.DoScaledAnimationAsync("DonutSquash", 0.5f); } } } diff --git a/Assets/Scripts/Games/BlueBear/Treat.cs b/Assets/Scripts/Games/BlueBear/Treat.cs index a4adcf517..5d5e3f872 100644 --- a/Assets/Scripts/Games/BlueBear/Treat.cs +++ b/Assets/Scripts/Games/BlueBear/Treat.cs @@ -8,17 +8,18 @@ using HeavenStudio.Util; namespace HeavenStudio.Games.Scripts_BlueBear { - public class Treat : MonoBehaviour + public class Treat : SuperCurveObject { - const float rotSpeed = 360f; + const float barelyDistX = 1.5f; + const float barelyDistY = -6f; + const float barelyHeight = 4f; + const float rotSpeed = 360f * 3; public bool isCake; public double startBeat; - - bool flying = true; double flyBeats; - [NonSerialized] public BezierCurve3D curve; + private Path path; private BlueBear game; @@ -30,33 +31,34 @@ namespace HeavenStudio.Games.Scripts_BlueBear private void Start() { flyBeats = isCake ? 3f : 2f; + Path pathToCopy = isCake ? game.GetPath("Cake") : game.GetPath("Donut"); + path = new(); + path.positions = new PathPos[2]; + path.positions[0].pos = pathToCopy.positions[0].pos; + path.positions[0].duration = pathToCopy.positions[0].duration; + path.positions[0].height = pathToCopy.positions[0].height; + path.positions[1].pos = pathToCopy.positions[1].pos; game.ScheduleInput(startBeat, flyBeats, isCake ? BlueBear.InputAction_Left : BlueBear.InputAction_Right, Just, Out, Out); + Update(); } private void Update() { - if (flying) + var cond = Conductor.instance; + transform.localPosition = GetPathPositionFromBeat(path, cond.songPositionInBeatsAsDouble, startBeat); + + float flyPos = cond.GetPositionFromBeat(startBeat, flyBeats); + if (flyPos > 2f) { - var cond = Conductor.instance; - - float flyPos = cond.GetPositionFromBeat(startBeat, flyBeats); - flyPos *= isCake ? 0.75f : 0.6f; - transform.position = curve.GetPoint(flyPos); - - if (flyPos > 1f) - { - Destroy(gameObject); - return; - } - - float rot = isCake ? rotSpeed : -rotSpeed; - transform.rotation = Quaternion.Euler(0, 0, transform.rotation.eulerAngles.z + (rot * Time.deltaTime)); + Destroy(gameObject); + return; } + + float rot = isCake ? rotSpeed : -rotSpeed; + transform.rotation = Quaternion.Euler(0, 0, transform.rotation.eulerAngles.z + (rot * Time.deltaTime * cond.pitchedSecPerBeat)); } void EatFood() { - flying = false; - if (isCake) { SoundByte.PlayOneShotGame("blueBear/chompCake"); @@ -71,21 +73,28 @@ namespace HeavenStudio.Games.Scripts_BlueBear SpawnCrumbs(); - GameObject.Destroy(gameObject); + Destroy(gameObject); } private void Just(PlayerActionEvent caller, float state) { if (state >= 1f || state <= -1f) - { //todo: proper near miss feedback + { + SoundByte.PlayOneShot("miss"); if (isCake) { - game.headAndBodyAnim.Play("BiteL", 0, 0); + game.headAndBodyAnim.DoScaledAnimationAsync("BiteL", 0, 0); } else { - game.headAndBodyAnim.Play("BiteR", 0, 0); + game.headAndBodyAnim.DoScaledAnimationAsync("BiteR", 0, 0); } + path.positions[0].pos = transform.localPosition; + path.positions[0].height = barelyHeight; + path.positions[0].duration = 1; + path.positions[1].pos = new Vector3(path.positions[0].pos.x + (isCake ? -barelyDistX : barelyDistX), path.positions[0].pos.y + barelyDistY); + startBeat = Conductor.instance.songPositionInBeatsAsDouble; + Update(); return; } EatFood(); @@ -104,7 +113,7 @@ namespace HeavenStudio.Games.Scripts_BlueBear var newGradient = new ParticleSystem.MinMaxGradient(isCake ? game.cakeGradient : game.donutGradient); newGradient.mode = ParticleSystemGradientMode.RandomColor; main.startColor = newGradient; - ps.Play(); + ps.PlayScaledAsync(1); } } } diff --git a/Assets/Scripts/Util/AnimationHelpers.cs b/Assets/Scripts/Util/AnimationHelpers.cs index 72351355a..093c9329d 100644 --- a/Assets/Scripts/Util/AnimationHelpers.cs +++ b/Assets/Scripts/Util/AnimationHelpers.cs @@ -90,6 +90,11 @@ namespace HeavenStudio.Util anim.speed = (1f / Conductor.instance.pitchedSecPerBeat) * timeScale; } + public static void SetScaledAnimationSpeed(this Animator anim, float timeScale = 0.5f) + { + anim.speed = (1f / Conductor.instance.pitchedSecPerBeat) * timeScale; + } + /// /// Plays animation on animator, at default speed /// this is the least nessecary function here lol