Blue Bear Final Tweaks (#581)

* scaled animations + barely + new curves

* emotion system revamped

* Whiff sound!!!
This commit is contained in:
Rapandrasmus 2023-11-22 02:07:35 +01:00 committed by GitHub
parent d88eb66ae5
commit 4505018ec7
5 changed files with 244 additions and 538 deletions

View file

@ -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

View file

@ -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:

View file

@ -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<Param>()
{
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<Param>()
{
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<RiqEntity> _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<SuperCurveObject>().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<RiqEntity> _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<Treat>();
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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -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;
}
/// <summary>
/// Plays animation on animator, at default speed
/// this is the least nessecary function here lol