Space Soccer Improvements (#382)

* SupahScrollSetUp

* Scrolls now, with issues, also added a flames animation

* Started implementing new multiple space kickers

* bg recolor space soccer

* Recolorable dots!

* we circular motitating n shit

* ReAdded Enter and exit stuff

* I despise unexplainable bugs

* The balls are so buggy 😱

* Trying to fix someting

* Fixed Scroll Stutter

* Fixed a whiff bug

* Updated sounds and added ease event for space kickers

* Fixed some bugs

* Changed some names

* new option for quiz show random presses

* Board meeting bug fixes

* Testing Curve stuff

* Converted all code to use new curves, need to fix all issues

* Playing around with keypoint values, will probably expose them so someone else can mess with them

* curves be like

* Fixed stuff

* BALLS FIXED

* Fixed clappy trio stuff

* Added player move event

* Almost fixed, just need to fix wonkiness with high kick toe

* Fixed da bug

* Board meeting and quiz show tweaks

* Fix for board meeting and enter/exit presets for space soccer

* Stop ball added

* Updated how scroll works
This commit is contained in:
Rapandrasmus 2023-04-26 14:43:35 +02:00 committed by GitHub
parent 7858bdba3d
commit ac1804a901
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
63 changed files with 2930 additions and 6163 deletions

View file

@ -1239,6 +1239,7 @@ MonoBehaviour:
executives:
- {fileID: 6299728505360095184}
firstSpinner: {fileID: 0}
shakeIntensity: 0.5
shouldBop: 1
--- !u!1 &4694930924533062141
GameObject:
@ -2731,7 +2732,7 @@ SpriteRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 2100000, guid: b0a1d7d7f9ff2cd429ca4a190e43f870, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 4ec811e943a61954488e85c297664954
guid: 8878e750028fe5d40971000a9b32abaf
AudioImporter:
externalObjects: {}
serializedVersion: 6

View file

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7be3b2013c2d0c34c931604607055453
guid: 0818c0ea169856f4494466439102b31e
AudioImporter:
externalObjects: {}
serializedVersion: 6

View file

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 5bb5d61162fc30d4e8bac1b3c9118bf8
guid: be0b91490c691d24f8c8cb4b1460d04a
AudioImporter:
externalObjects: {}
serializedVersion: 6

Binary file not shown.

View file

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 64c331d8798918c4487e4849786dd1d7
guid: d822338302ca3b249a18b151ba4fa8a8
AudioImporter:
externalObjects: {}
serializedVersion: 6

Binary file not shown.

View file

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: c8368e83560222e46b62099062a6f3c2
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

@ -1,22 +0,0 @@
fileFormatVersion: 2
guid: 81eb6d0eab105114eb9d1c8ff46bfc6c
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

@ -1,22 +0,0 @@
fileFormatVersion: 2
guid: 7678de6fa1729804caa2c9bb870a2bf8
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

@ -1,22 +0,0 @@
fileFormatVersion: 2
guid: 19a4c6aac41082c46a5609e6c83db60b
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

@ -0,0 +1,98 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: FixLines
m_Shader: {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
m_ValidKeywords:
- PIXELSNAP_ON
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _AlphaTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- PixelSnap: 1
- _BumpScale: 1
- _ColorMask: 15
- _CullMode: 0
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _EnableExternalAlpha: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _UVSec: 0
- _UseUIAlphaClip: 0
- _ZWrite: 1
m_Colors:
- _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _Flip: {r: 1, g: 1, b: 1, a: 1}
- _RendererColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b0a1d7d7f9ff2cd429ca4a190e43f870
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,169 @@
%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: Exit
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, y: 0, z: 0}
inSlope: {x: -0, y: -13.83, z: -0}
outSlope: {x: 0, 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: 1
value: {x: 0, y: 4.61, z: 0}
inSlope: {x: -0, y: 4.61, z: -0}
outSlope: {x: 0, 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}
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: 1
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: 0
inSlope: -0
outSlope: 0
tangentMode: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: -0
outSlope: 0
tangentMode: 5
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
inSlope: -13.83
outSlope: 0
tangentMode: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 4.61
inSlope: 4.61
outSlope: 0
tangentMode: 5
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: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: -0
outSlope: 0
tangentMode: 5
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: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6ebce37a7213c544594a601e54d183c8
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -15,6 +15,9 @@ AnimatorStateMachine:
- serializedVersion: 1
m_State: {fileID: 1202819537732696605}
m_Position: {x: 235, y: 65, z: 0}
- serializedVersion: 1
m_State: {fileID: 3711248145631849244}
m_Position: {x: 270, y: 130, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
@ -73,6 +76,32 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &3711248145631849244
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Exit
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: 6ebce37a7213c544594a601e54d183c8, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &5505276313628069294
AnimatorState:
serializedVersion: 6

View file

@ -0,0 +1,169 @@
%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: Enter
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: -17.13, y: -21.49, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, 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.5
value: {x: 0, y: 0, z: 0}
inSlope: {x: 34.26, y: 42.98, z: -0}
outSlope: {x: 0, 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}
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.5
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: -17.13
inSlope: 0
outSlope: 0
tangentMode: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: 34.26
outSlope: 0
tangentMode: 5
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: -21.49
inSlope: 0
outSlope: 0
tangentMode: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: 42.98
outSlope: 0
tangentMode: 5
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: 5
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: -0
outSlope: 0
tangentMode: 5
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: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0f7db4ae51567d142b38325c40f6fcd7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,169 @@
%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: Exit
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, y: 0, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: -34.26, y: -42.98, 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.5
value: {x: -17.13, y: -21.49, z: 0}
inSlope: {x: -34.26, y: -42.98, z: -0}
outSlope: {x: 0, 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}
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.5
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: 0
inSlope: 0
outSlope: -34.26
tangentMode: 69
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: -17.13
inSlope: -34.26
outSlope: 0
tangentMode: 5
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
inSlope: 0
outSlope: -42.98
tangentMode: 69
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: -21.49
inSlope: -42.98
outSlope: 0
tangentMode: 5
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: 69
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: -0
outSlope: 0
tangentMode: 5
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: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 48c7e041261507849a6f50b676497331
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,72 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1107 &-3904704463367489638
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: -1029899711992913206}
m_Position: {x: 200, y: 0, 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: -1029899711992913206}
--- !u!1102 &-1029899711992913206
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: FlamesIdle
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: cd49088e993d43d4093881043c10ac5a, 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: Flames
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: -3904704463367489638}
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}

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: dd605e3b4f80d0e4881650f745ea991f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,323 @@
%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: FlamesIdle
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.r
path:
classID: 212
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.g
path:
classID: 212
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.b
path:
classID: 212
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.083333336
value: 0
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.a
path:
classID: 212
script: {fileID: 0}
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: 2526845255
script: {fileID: 0}
typeID: 212
customType: 0
isPPtrCurve: 0
- serializedVersion: 2
path: 0
attribute: 4215373228
script: {fileID: 0}
typeID: 212
customType: 0
isPPtrCurve: 0
- serializedVersion: 2
path: 0
attribute: 2334886179
script: {fileID: 0}
typeID: 212
customType: 0
isPPtrCurve: 0
- serializedVersion: 2
path: 0
attribute: 304273561
script: {fileID: 0}
typeID: 212
customType: 0
isPPtrCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.16666667
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: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.r
path:
classID: 212
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.g
path:
classID: 212
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.b
path:
classID: 212
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.083333336
value: 0
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 1
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.a
path:
classID: 212
script: {fileID: 0}
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cd49088e993d43d4093881043c10ac5a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,130 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1107 &-8817679360390378382
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: -2311823519829189078}
m_Position: {x: 200, y: 0, z: 0}
- serializedVersion: 1
m_State: {fileID: 1294808964957173579}
m_Position: {x: 235, y: 65, z: 0}
- serializedVersion: 1
m_State: {fileID: 8441207889748118883}
m_Position: {x: 270, y: 130, 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: -2311823519829189078}
--- !u!1102 &-2311823519829189078
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Present
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: 9f531e5791a33fd44ac96801e8a68d45, 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: Holder
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: -8817679360390378382}
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 &1294808964957173579
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Enter
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: 0f7db4ae51567d142b38325c40f6fcd7, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &8441207889748118883
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Exit
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: 48c7e041261507849a6f50b676497331, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 02a8d7c380af5474ca2f7758bc484ace
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -461,45 +461,6 @@ AnimationClip:
path: Holder/Torso
classID: 212
script: {fileID: 0}
- curve:
- time: 0
value: {fileID: 0}
- time: 0.016666668
value: {fileID: 0}
- time: 0.033333335
value: {fileID: 0}
- time: 0.05
value: {fileID: 0}
- time: 0.06666667
value: {fileID: 0}
- time: 0.083333336
value: {fileID: 0}
- time: 0.1
value: {fileID: 0}
- time: 0.11666667
value: {fileID: 0}
- time: 0.13333334
value: {fileID: 0}
- time: 0.15
value: {fileID: 0}
- time: 0.16666667
value: {fileID: 0}
- time: 0.18333334
value: {fileID: 0}
- time: 0.2
value: {fileID: 0}
- time: 0.21666667
value: {fileID: 0}
- time: 0.23333333
value: {fileID: 0}
- time: 0.25
value: {fileID: 0}
- time: 0.26666668
value: {fileID: 0}
attribute: m_Sprite
path: Square (3)
classID: 212
script: {fileID: 0}
- curve:
- time: 0
value: {fileID: 434938072123433104, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
@ -604,13 +565,6 @@ AnimationClip:
typeID: 212
customType: 23
isPPtrCurve: 1
- serializedVersion: 2
path: 2827832259
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
- serializedVersion: 2
path: 354493626
attribute: 0
@ -630,23 +584,6 @@ AnimationClip:
- {fileID: -2516537432793170592, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: -2950019292274531361, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: 1331937126919517603, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 434938072123433104, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: 4331073688640613404, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: 569701050227369887, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}

View file

@ -418,45 +418,6 @@ AnimationClip:
classID: 212
script: {fileID: 0}
m_PPtrCurves:
- curve:
- time: 0
value: {fileID: 21300000, guid: 85285fc4fa793c447a696cf0d29cbd31, type: 3}
- time: 0.016666668
value: {fileID: 21300000, guid: 876aea4a8b33fcc4a867695bb5035868, type: 3}
- time: 0.033333335
value: {fileID: 21300000, guid: eb8a8558179e8d9428f1f4278746e56a, type: 3}
- time: 0.05
value: {fileID: 21300000, guid: ae99273e77678da4a984870a869ba309, type: 3}
- time: 0.06666667
value: {fileID: 21300000, guid: 0196ca03c69b6bf4a89fe50912f41b2c, type: 3}
- time: 0.083333336
value: {fileID: 21300000, guid: 9b552c0212205734cabb17b0d32407c0, type: 3}
- time: 0.1
value: {fileID: 21300000, guid: bd629d3b2db93f840bdcaa079db21f69, type: 3}
- time: 0.11666667
value: {fileID: 21300000, guid: cc8a7e536434aa9428c778c9cf1fffbf, type: 3}
- time: 0.13333334
value: {fileID: 21300000, guid: 3908d6e952ca2414583d87968b2da294, type: 3}
- time: 0.15
value: {fileID: 21300000, guid: a057ea808ce1b22408507a3bb1491ddc, type: 3}
- time: 0.16666667
value: {fileID: 21300000, guid: 91f984c7f28e5a64688456c1c803bc13, type: 3}
- time: 0.18333334
value: {fileID: 21300000, guid: 1299fe603ea7f8c4c9d2073b355725b6, type: 3}
- time: 0.2
value: {fileID: 21300000, guid: 3ad165d14b919c14dbeb71c865e2ef64, type: 3}
- time: 0.21666667
value: {fileID: 21300000, guid: 8e5a5c36f3435b74698e95dae1b2082d, type: 3}
- time: 0.23333333
value: {fileID: 21300000, guid: 8ae4bb3e4cce9804686b0e0756f52cbc, type: 3}
- time: 0.25
value: {fileID: 21300000, guid: 5f2ae6b9b25e45c468fea9b30b311122, type: 3}
- time: 0.26666668
value: {fileID: 21300000, guid: 000f8ff15f9083a4886ceb8f7d67ce23, type: 3}
attribute: m_Sprite
path: Square (3)
classID: 212
script: {fileID: 0}
- curve:
- time: 0
value: {fileID: -2516537432793170592, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
@ -567,13 +528,6 @@ AnimationClip:
typeID: 212
customType: 26
isPPtrCurve: 0
- serializedVersion: 2
path: 2827832259
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
- serializedVersion: 2
path: 862337961
attribute: 0
@ -596,23 +550,6 @@ AnimationClip:
customType: 23
isPPtrCurve: 1
pptrCurveMapping:
- {fileID: 21300000, guid: 85285fc4fa793c447a696cf0d29cbd31, type: 3}
- {fileID: 21300000, guid: 876aea4a8b33fcc4a867695bb5035868, type: 3}
- {fileID: 21300000, guid: eb8a8558179e8d9428f1f4278746e56a, type: 3}
- {fileID: 21300000, guid: ae99273e77678da4a984870a869ba309, type: 3}
- {fileID: 21300000, guid: 0196ca03c69b6bf4a89fe50912f41b2c, type: 3}
- {fileID: 21300000, guid: 9b552c0212205734cabb17b0d32407c0, type: 3}
- {fileID: 21300000, guid: bd629d3b2db93f840bdcaa079db21f69, type: 3}
- {fileID: 21300000, guid: cc8a7e536434aa9428c778c9cf1fffbf, type: 3}
- {fileID: 21300000, guid: 3908d6e952ca2414583d87968b2da294, type: 3}
- {fileID: 21300000, guid: a057ea808ce1b22408507a3bb1491ddc, type: 3}
- {fileID: 21300000, guid: 91f984c7f28e5a64688456c1c803bc13, type: 3}
- {fileID: 21300000, guid: 1299fe603ea7f8c4c9d2073b355725b6, type: 3}
- {fileID: 21300000, guid: 3ad165d14b919c14dbeb71c865e2ef64, type: 3}
- {fileID: 21300000, guid: 8e5a5c36f3435b74698e95dae1b2082d, type: 3}
- {fileID: 21300000, guid: 8ae4bb3e4cce9804686b0e0756f52cbc, type: 3}
- {fileID: 21300000, guid: 5f2ae6b9b25e45c468fea9b30b311122, type: 3}
- {fileID: 21300000, guid: 000f8ff15f9083a4886ceb8f7d67ce23, type: 3}
- {fileID: -2516537432793170592, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: -2516537432793170592, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: -2516537432793170592, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}

View file

@ -0,0 +1,53 @@
%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: Present
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: []
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: []
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 1
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: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9f531e5791a33fd44ac96801e8a68d45
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -640,57 +640,6 @@ AnimationClip:
classID: 212
script: {fileID: 0}
m_PPtrCurves:
- curve:
- time: 0
value: {fileID: 21300000, guid: c5b59e91368953049893b676adf67b31, type: 3}
- time: 0.016666668
value: {fileID: 21300000, guid: 90f0b2f80c7edac43b09f918f1ff580b, type: 3}
- time: 0.033333335
value: {fileID: 21300000, guid: c4e56ef117a832c4180579ccc78db094, type: 3}
- time: 0.05
value: {fileID: 21300000, guid: 30772ee3d83ca4e4bac50aeaee2e2b4f, type: 3}
- time: 0.06666667
value: {fileID: 21300000, guid: 1762147fd6036e94d943a538b582ecdf, type: 3}
- time: 0.083333336
value: {fileID: 21300000, guid: e05b61967e7fde8429280d9c8823542a, type: 3}
- time: 0.1
value: {fileID: 21300000, guid: 64620c0ba6db93b47afeed9dfd89706a, type: 3}
- time: 0.11666667
value: {fileID: 21300000, guid: 566de5c7084a2dd4eae23d99c54a2d87, type: 3}
- time: 0.13333334
value: {fileID: 21300000, guid: 2f85731c8b5915c4098414fbea9f10c5, type: 3}
- time: 0.15
value: {fileID: 21300000, guid: c6b0a5d4f41ccb54c830dada7be47a78, type: 3}
- time: 0.16666667
value: {fileID: 21300000, guid: 4907d013bb465c24baa74c254408d181, type: 3}
- time: 0.18333334
value: {fileID: 21300000, guid: b0194c9de2954454e9c5b541ac294780, type: 3}
- time: 0.2
value: {fileID: 21300000, guid: 1df8384389be4ff4aa3955531c319d72, type: 3}
- time: 0.21666667
value: {fileID: 21300000, guid: f13b27f81fb72df4e9dc0bf2ec896d70, type: 3}
- time: 0.23333333
value: {fileID: 21300000, guid: cbda92f0f4ea8b144aca886398215771, type: 3}
- time: 0.25
value: {fileID: 21300000, guid: 0c48bca9218fc0a468a80f1d08d592f8, type: 3}
- time: 0.26666668
value: {fileID: 21300000, guid: a321d1922460c304582af2787a177a9a, type: 3}
- time: 0.28333333
value: {fileID: 21300000, guid: 103fc10dbaad3fd4ba606885d63f3d0d, type: 3}
- time: 0.3
value: {fileID: 21300000, guid: 08cb0b211c105c84f8fe66d71f4e36c5, type: 3}
- time: 0.31666666
value: {fileID: 21300000, guid: 8658c21f1e9570d46bbf9bd5c41aef23, type: 3}
- time: 0.33333334
value: {fileID: 21300000, guid: f39c46b553ef47b42ba41b6dd167af0f, type: 3}
- time: 0.35
value: {fileID: 21300000, guid: 12530de2f7256264dbb551e28b39a6ad, type: 3}
- time: 0.36666667
value: {fileID: 21300000, guid: 114ea331efe9e9f48b701bfe107f73e4, type: 3}
attribute: m_Sprite
path: Square (3)
classID: 212
script: {fileID: 0}
- curve:
- time: 0
value: {fileID: -2516537432793170592, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
@ -892,13 +841,6 @@ AnimationClip:
typeID: 212
customType: 26
isPPtrCurve: 0
- serializedVersion: 2
path: 2827832259
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
- serializedVersion: 2
path: 862337961
attribute: 0
@ -956,29 +898,6 @@ AnimationClip:
customType: 0
isPPtrCurve: 0
pptrCurveMapping:
- {fileID: 21300000, guid: c5b59e91368953049893b676adf67b31, type: 3}
- {fileID: 21300000, guid: 90f0b2f80c7edac43b09f918f1ff580b, type: 3}
- {fileID: 21300000, guid: c4e56ef117a832c4180579ccc78db094, type: 3}
- {fileID: 21300000, guid: 30772ee3d83ca4e4bac50aeaee2e2b4f, type: 3}
- {fileID: 21300000, guid: 1762147fd6036e94d943a538b582ecdf, type: 3}
- {fileID: 21300000, guid: e05b61967e7fde8429280d9c8823542a, type: 3}
- {fileID: 21300000, guid: 64620c0ba6db93b47afeed9dfd89706a, type: 3}
- {fileID: 21300000, guid: 566de5c7084a2dd4eae23d99c54a2d87, type: 3}
- {fileID: 21300000, guid: 2f85731c8b5915c4098414fbea9f10c5, type: 3}
- {fileID: 21300000, guid: c6b0a5d4f41ccb54c830dada7be47a78, type: 3}
- {fileID: 21300000, guid: 4907d013bb465c24baa74c254408d181, type: 3}
- {fileID: 21300000, guid: b0194c9de2954454e9c5b541ac294780, type: 3}
- {fileID: 21300000, guid: 1df8384389be4ff4aa3955531c319d72, type: 3}
- {fileID: 21300000, guid: f13b27f81fb72df4e9dc0bf2ec896d70, type: 3}
- {fileID: 21300000, guid: cbda92f0f4ea8b144aca886398215771, type: 3}
- {fileID: 21300000, guid: 0c48bca9218fc0a468a80f1d08d592f8, type: 3}
- {fileID: 21300000, guid: a321d1922460c304582af2787a177a9a, type: 3}
- {fileID: 21300000, guid: 103fc10dbaad3fd4ba606885d63f3d0d, type: 3}
- {fileID: 21300000, guid: 08cb0b211c105c84f8fe66d71f4e36c5, type: 3}
- {fileID: 21300000, guid: 8658c21f1e9570d46bbf9bd5c41aef23, type: 3}
- {fileID: 21300000, guid: f39c46b553ef47b42ba41b6dd167af0f, type: 3}
- {fileID: 21300000, guid: 12530de2f7256264dbb551e28b39a6ad, type: 3}
- {fileID: 21300000, guid: 114ea331efe9e9f48b701bfe107f73e4, type: 3}
- {fileID: -2516537432793170592, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: -2516537432793170592, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: -2516537432793170592, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}

View file

@ -725,57 +725,6 @@ AnimationClip:
path: Holder/Torso
classID: 212
script: {fileID: 0}
- curve:
- time: 0
value: {fileID: 21300000, guid: 423d2d39567554d47ac48946416046b4, type: 3}
- time: 0.016666668
value: {fileID: 21300000, guid: 9b76ecc43df6b3745976decad501e452, type: 3}
- time: 0.033333335
value: {fileID: 21300000, guid: 96f75ca608e484d4abb38ca5c31556f1, type: 3}
- time: 0.05
value: {fileID: 21300000, guid: 6ea13a1f5009ed74db124f7e0638c9a3, type: 3}
- time: 0.06666667
value: {fileID: 21300000, guid: 9d9e386962afa9b45be225105480a8e7, type: 3}
- time: 0.083333336
value: {fileID: 21300000, guid: 8e6d8886d2936a44e87a20a5f9f94db9, type: 3}
- time: 0.1
value: {fileID: 21300000, guid: 15f8f600c1f31944d8d3a35dbf59b6ae, type: 3}
- time: 0.11666667
value: {fileID: 21300000, guid: 43d87f3f32976ea4e98adf1af8920abf, type: 3}
- time: 0.13333334
value: {fileID: 21300000, guid: d0f64e5b0665ad44e97646ae3d5ecdcc, type: 3}
- time: 0.15
value: {fileID: 21300000, guid: 64ecfbeccbb888d408f0c7c104bff902, type: 3}
- time: 0.16666667
value: {fileID: 21300000, guid: d195c5e4a97a6c94dbb6f522b0935e57, type: 3}
- time: 0.18333334
value: {fileID: 21300000, guid: 132affa4eea5a474392e47d6347ac862, type: 3}
- time: 0.2
value: {fileID: 21300000, guid: e03f13f8c885ca540b78be3e790add6f, type: 3}
- time: 0.21666667
value: {fileID: 21300000, guid: 691e8ecc86bd75e4e9bf1948e9348e9c, type: 3}
- time: 0.23333333
value: {fileID: 21300000, guid: 788a842a532b87a49b1505cc3e7edbc0, type: 3}
- time: 0.25
value: {fileID: 21300000, guid: aaba3279b5352c446bb7cbfd30a04887, type: 3}
- time: 0.26666668
value: {fileID: 21300000, guid: ecc00fe6490b0cf489fd98959309369b, type: 3}
- time: 0.28333333
value: {fileID: 21300000, guid: f41ae78c2f8c2214e9de34374cccc611, type: 3}
- time: 0.3
value: {fileID: 21300000, guid: 46f5937b3904e8e43be1b2b9a7d4271f, type: 3}
- time: 0.31666666
value: {fileID: 21300000, guid: 8428c53762d6dd34d9cc74f42a9b66a2, type: 3}
- time: 0.33333334
value: {fileID: 21300000, guid: 998521bfd774e0d4da723bbe8a97fb89, type: 3}
- time: 0.35
value: {fileID: 21300000, guid: 2abc7dab2ad1cf947a97f5011a2c6c21, type: 3}
- time: 0.36666667
value: {fileID: 21300000, guid: 5bfcc8fb95a02fa49836e2b79e12a120, type: 3}
attribute: m_Sprite
path: Square (3)
classID: 212
script: {fileID: 0}
- curve:
- time: 0
value: {fileID: -2051858073515657074, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
@ -949,13 +898,6 @@ AnimationClip:
typeID: 212
customType: 23
isPPtrCurve: 1
- serializedVersion: 2
path: 2827832259
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
- serializedVersion: 2
path: 3667742504
attribute: 0
@ -991,29 +933,6 @@ AnimationClip:
- {fileID: 1331937126919517603, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: 1331937126919517603, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: 4316165930547777794, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: 21300000, guid: 423d2d39567554d47ac48946416046b4, type: 3}
- {fileID: 21300000, guid: 9b76ecc43df6b3745976decad501e452, type: 3}
- {fileID: 21300000, guid: 96f75ca608e484d4abb38ca5c31556f1, type: 3}
- {fileID: 21300000, guid: 6ea13a1f5009ed74db124f7e0638c9a3, type: 3}
- {fileID: 21300000, guid: 9d9e386962afa9b45be225105480a8e7, type: 3}
- {fileID: 21300000, guid: 8e6d8886d2936a44e87a20a5f9f94db9, type: 3}
- {fileID: 21300000, guid: 15f8f600c1f31944d8d3a35dbf59b6ae, type: 3}
- {fileID: 21300000, guid: 43d87f3f32976ea4e98adf1af8920abf, type: 3}
- {fileID: 21300000, guid: d0f64e5b0665ad44e97646ae3d5ecdcc, type: 3}
- {fileID: 21300000, guid: 64ecfbeccbb888d408f0c7c104bff902, type: 3}
- {fileID: 21300000, guid: d195c5e4a97a6c94dbb6f522b0935e57, type: 3}
- {fileID: 21300000, guid: 132affa4eea5a474392e47d6347ac862, type: 3}
- {fileID: 21300000, guid: e03f13f8c885ca540b78be3e790add6f, type: 3}
- {fileID: 21300000, guid: 691e8ecc86bd75e4e9bf1948e9348e9c, type: 3}
- {fileID: 21300000, guid: 788a842a532b87a49b1505cc3e7edbc0, type: 3}
- {fileID: 21300000, guid: aaba3279b5352c446bb7cbfd30a04887, type: 3}
- {fileID: 21300000, guid: ecc00fe6490b0cf489fd98959309369b, type: 3}
- {fileID: 21300000, guid: f41ae78c2f8c2214e9de34374cccc611, type: 3}
- {fileID: 21300000, guid: 46f5937b3904e8e43be1b2b9a7d4271f, type: 3}
- {fileID: 21300000, guid: 8428c53762d6dd34d9cc74f42a9b66a2, type: 3}
- {fileID: 21300000, guid: 998521bfd774e0d4da723bbe8a97fb89, type: 3}
- {fileID: 21300000, guid: 2abc7dab2ad1cf947a97f5011a2c6c21, type: 3}
- {fileID: 21300000, guid: 5bfcc8fb95a02fa49836e2b79e12a120, type: 3}
- {fileID: -2051858073515657074, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: -8945811739807646793, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}
- {fileID: 2180483017105320577, guid: ed47c3fa4e916ff478c0f1b6fb057aa4, type: 3}

View file

@ -26,7 +26,7 @@ TextureImporter:
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
isReadable: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0

View file

@ -0,0 +1,32 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace HeavenStudio.Common
{
public class CircularMotion : MonoBehaviour
{
public float timeOffset = 0;
public float timeCounter = 0;
[SerializeField] Transform rootPos;
public float speed;
public float width;
public float height;
private void Start()
{
timeCounter = 0;
}
private void Update()
{
timeCounter += Time.deltaTime * speed;
float x = Mathf.Cos(timeCounter + timeOffset) * width + rootPos.position.x;
float y = Mathf.Sin(timeCounter + timeOffset) * height + rootPos.position.y;
float z = transform.position.z;
transform.position = new Vector3(x, y, z);
}
}
}

View file

@ -6,6 +6,8 @@ namespace HeavenStudio.Common
{
#region Private
[SerializeField] private Material _shader;
[SerializeField]
private Renderer _renderer;
@ -32,7 +34,7 @@ namespace HeavenStudio.Common
private void Start()
{
_renderer.material = new Material(Shader.Find("Unlit/Transparent"));
_renderer.material = _shader;
var spriteRect = _sprite.rect;
var tex = CropTexture(_sprite.texture, new Rect(spriteRect.x, spriteRect.y, spriteRect.width, spriteRect .height));
@ -53,7 +55,7 @@ namespace HeavenStudio.Common
private Texture2D CropTexture(Texture2D original, Rect rect)
{
var colors = original.GetPixels((int)rect.x, (int)rect.y, (int)rect.width, (int)rect.height);
var newTex = new Texture2D((int)rect.width - (int)rect.x, (int)rect.height - (int)rect.y);
var newTex = new Texture2D((int)rect.width, (int)rect.height);
newTex.SetPixels(colors);
newTex.Apply();

View file

@ -1,27 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CircularMotion : MonoBehaviour
{
[SerializeField] float timeCounter = 0;
[SerializeField] Transform rootPos;
[SerializeField] float speed;
[SerializeField] float width;
[SerializeField] float height;
private void Start()
{
timeCounter = 0;
}
private void Update()
{
timeCounter += Time.deltaTime * speed;
float x = Mathf.Cos(timeCounter) * width + rootPos.position.x;
float y = Mathf.Sin(timeCounter) * height + rootPos.position.y;
float z = rootPos.position.z;
transform.position = new Vector3(x, y, z);
}
}

View file

@ -30,13 +30,14 @@ namespace HeavenStudio.Games.Scripts_BoardMeeting
canBop = false;
}
public void Spin(string soundToPlay = "A")
public void Spin(string soundToPlay = "A", bool forceStart = false)
{
if (spinning) return;
spinning = true;
preparing = false;
if (this == game.firstSpinner) anim.DoUnscaledAnimation("Spin");
else anim.DoUnscaledAnimation("Spin", game.firstSpinner.anim.GetCurrentAnimatorStateInfo(0).normalizedTime);
string animToPlay = game.firstSpinner.anim.GetCurrentAnimatorStateInfo(0).IsName("Spin") ? "Spin" : "LoopSpin";
if (this == game.firstSpinner) anim.DoUnscaledAnimation("Spin", 0);
else anim.DoUnscaledAnimation(forceStart ? "Spin" : animToPlay, forceStart ? 0 : game.firstSpinner.anim.GetCurrentAnimatorStateInfo(0).normalizedTime);
canBop = false;
Jukebox.PlayOneShotGame("boardMeeting/rollPrepare" + soundToPlay);
float offset = 0;

View file

@ -62,7 +62,7 @@ namespace HeavenStudio.Games.Loaders
defaultLength = 0.5f,
parameters = new List<Param>()
{
new Param("amount", new EntityTypes.Integer(3, 6, 4), "Amount", "How many executives will there be?")
new Param("amount", new EntityTypes.Integer(3, 5, 4), "Amount", "How many executives will there be?")
}
}
});
@ -119,6 +119,7 @@ namespace HeavenStudio.Games
executives[executiveCount - 1].Stop(false);
Jukebox.PlayOneShotGame("boardMeeting/miss");
Jukebox.PlayOneShot("miss");
ScoreMiss();
}
}
}
@ -279,10 +280,12 @@ namespace HeavenStudio.Games
public void Spin(int start, int end)
{
if (start > executiveCount || end > executiveCount) return;
bool forceStart = false;
if (chairLoopSound == null)
{
chairLoopSound = Jukebox.PlayOneShotGame("boardMeeting/chairLoop", -1, 1, 1, true);
firstSpinner = executives[start - 1];
forceStart = true;
}
for (int i = start - 1; i < end; i++)
{
@ -301,7 +304,7 @@ namespace HeavenStudio.Games
{
soundToPlay = "Player";
}
executives[i].Spin(soundToPlay);
executives[i].Spin(soundToPlay, forceStart);
}
}
@ -310,20 +313,33 @@ namespace HeavenStudio.Games
float startPos = farLeft.position.x;
float maxWidth = Mathf.Abs(farLeft.position.x - farRight.position.x);
for (int i = 0; i < executiveCount; i++)
float betweenDistance = maxWidth / 3;
maxWidth = betweenDistance * executiveCount;
startPos = -(maxWidth / 2);
for (int i = -1; i < executiveCount; i++)
{
BMExecutive executive;
if (i == 0) executive = executives[0];
else executive = Instantiate(executives[0], transform);
if (i == -1)
{
assistantAnim.transform.localPosition = new Vector3(startPos + 5.359f, 0);
}
else
{
BMExecutive executive;
if (i == 0) executive = executives[0];
else executive = Instantiate(executives[0], transform);
executive.transform.localPosition = new Vector3(startPos + ((maxWidth / (executiveCount - 1)) * i), 0);
executive.GetComponent<SortingGroup>().sortingOrder = i;
executive.transform.localPosition = new Vector3(startPos + betweenDistance * (i + 1), 0);
executive.GetComponent<SortingGroup>().sortingOrder = i;
if (i > 0)
executives.Add(executive);
if (i > 0)
executives.Add(executive);
if (i == executiveCount - 1)
executive.player = true;
if (i == executiveCount - 1)
executive.player = true;
}
}
}

View file

@ -19,12 +19,13 @@ namespace HeavenStudio.Games.Loaders
},
new GameAction("bop", "Bop")
{
function = delegate { var e = eventCaller.currentEntity; ClappyTrio.instance.BopToggle(e.beat, e.length, e["bop"], e["autoBop"]); },
function = delegate { var e = eventCaller.currentEntity; ClappyTrio.instance.BopToggle(e.beat, e.length, e["bop"], e["autoBop"], e["emo"]); },
resizable = true,
parameters = new List<Param>()
{
new Param("bop", true, "Bop", "Should the lions bop?"),
new Param("autoBop", false, "Bop (Auto)", "Should the lions auto bop?")
new Param("autoBop", false, "Bop (Auto)", "Should the lions auto bop?"),
new Param("emo", false, "Disable Emotion", "Should the lions just show the neutral face while bopping?")
}
},
new GameAction("prepare", "Prepare Stance")
@ -37,10 +38,11 @@ namespace HeavenStudio.Games.Loaders
},
new GameAction("sign", "Sign Enter")
{
function = delegate { var e = eventCaller.currentEntity; ClappyTrio.instance.Sign(e.beat, e.length, e["ease"]); },
function = delegate { var e = eventCaller.currentEntity; ClappyTrio.instance.Sign(e.beat, e.length, e["ease"], e["down"]); },
parameters = new List<Param>()
{
new Param("ease", EasingFunction.Ease.Linear, "Ease", "Which ease should the sign move with?"),
new Param("down", true, "Down", "Should the sign go down?")
},
resizable = true
},
@ -86,6 +88,8 @@ namespace HeavenStudio.Games
public bool playerHitLast = false;
public bool missed;
bool shouldBop;
bool doEmotion = true;
public int emoCounter;
public GameEvent bop = new GameEvent();
@ -93,6 +97,7 @@ namespace HeavenStudio.Games
float signStartBeat;
float signLength;
EasingFunction.Ease lastEase;
bool signGoDown;
public static ClappyTrio instance { get; set; }
@ -129,16 +134,18 @@ namespace HeavenStudio.Games
{
EasingFunction.Function func = EasingFunction.GetEasingFunction(lastEase);
float newPos = func(0, 1, normalizedBeat);
signAnim.DoNormalizedAnimation("Enter", newPos);
signAnim.DoNormalizedAnimation(signGoDown ? "Enter" : "Exit", newPos);
}
}
}
public void Sign(float beat, float length, int ease)
public void Sign(float beat, float length, int ease, bool down)
{
Jukebox.PlayOneShotGame("clappyTrio/sign");
signStartBeat = beat;
signLength = length;
lastEase = (EasingFunction.Ease)ease;
signGoDown = down;
}
private void InitLions()
@ -204,13 +211,15 @@ namespace HeavenStudio.Games
Jukebox.PlayOneShotGame("clappyTrio/ready");
}
public void BopToggle(float beat, float length, bool startBop, bool autoBop)
public void BopToggle(float beat, float length, bool startBop, bool autoBop, bool emo)
{
doEmotion = !emo;
shouldBop = autoBop;
if (startBop)
{
for (int i = 0; i < length; i++)
{
if (i == 0 && startBop && autoBop) continue;
float spawnBeat = beat + i;
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
{
@ -222,32 +231,45 @@ namespace HeavenStudio.Games
public void Bop(float beat)
{
if (playerHitLast)
if (doEmotion && emoCounter > 0)
{
for (int i = 0; i < Lion.Count; i++)
{
SetFace(i, 1);
}
}
else if (missed)
{
var a = EventCaller.GetAllInGameManagerList("clappyTrio", new string[] { "clap" });
var b = a.FindAll(c => c.beat < beat);
if (b.Count > 0)
if (playerHitLast)
{
for (int i = 0; i < Lion.Count; i++)
{
if (i == Lion.Count - 1)
SetFace(i, 1);
}
}
else if (missed)
{
var a = EventCaller.GetAllInGameManagerList("clappyTrio", new string[] { "clap" });
var b = a.FindAll(c => c.beat < beat);
if (b.Count > 0)
{
for (int i = 0; i < Lion.Count; i++)
{
SetFace(i, 0);
} else
{
SetFace(i, 2);
if (i == Lion.Count - 1)
{
SetFace(i, 0);
}
else
{
SetFace(i, 2);
}
}
}
}
emoCounter--;
}
else
{
for (int i = 0; i < Lion.Count; i++)
{
SetFace(i, 0);
}
}
PlayAnimationAll("Bop");
}

View file

@ -56,6 +56,7 @@ namespace HeavenStudio.Games.Scripts_ClappyTrio
private void Miss(PlayerActionEvent caller) {
game.playerHitLast = false;
game.missed = true;
game.emoCounter = 2;
if (clapStarted)
this.canHit = false;
@ -65,6 +66,7 @@ namespace HeavenStudio.Games.Scripts_ClappyTrio
private void Clap(bool just)
{
game.emoCounter = 2;
if (just)
{
clapEffect.SetActive(true);

View file

@ -35,12 +35,13 @@ namespace HeavenStudio.Games.Loaders
},
new GameAction("randomPresses", "Random Presses")
{
function = delegate { var e = eventCaller.currentEntity; QuizShow.instance.RandomPress(e.beat, e.length, e["min"], e["max"], e["random"]); },
function = delegate { var e = eventCaller.currentEntity; QuizShow.instance.RandomPress(e.beat, e.length, e["min"], e["max"], e["random"], e["con"]); },
parameters = new List<Param>()
{
new Param("min", new EntityTypes.Integer(0, 666, 0), "Minimum", "The minimum number of presses this block will do."),
new Param("max", new EntityTypes.Integer(0, 666, 1), "Maximum", "The maximum number of presses this block will do."),
new Param("random", QuizShow.WhichButtonRandom.Random, "Which Buttons", "Which buttons will be pressed randomly?")
new Param("random", QuizShow.WhichButtonRandom.Random, "Which Buttons", "Which buttons will be pressed randomly?"),
new Param("con", true, "Consecutive Presses", "Will the presses be consecutive? As in if the first press doesn't trigger, the ones proceeding will not either.")
},
resizable = true
},
@ -54,7 +55,7 @@ namespace HeavenStudio.Games.Loaders
new Param("sound", true, "Play Time-Up Sound?", "Should the Time-Up sound play at the end of the interval?"),
new Param("con", false, "Consecutive", "Disables everything that happens at the end of the interval if ticked on."),
new Param("visual", true, "Stopwatch (Visual)", "Should the stopwatch visually appear?"),
new Param("audio", true, "Stopwatch (Audio)", "Should the sounds of the stopwatch play?")
new Param("audio", QuizShow.ClockAudio.Both, "Stopwatch (Audio)", "Should the sounds of the stopwatch play?")
}
},
new GameAction("revealAnswer", "Reveal Answer")
@ -109,6 +110,13 @@ namespace HeavenStudio.Games
{
public class QuizShow : Minigame
{
public enum ClockAudio
{
Both,
Start,
End,
Neither
}
public enum HeadStage
{
Stage0 = 0,
@ -221,35 +229,68 @@ namespace HeavenStudio.Games
currentStage = stage;
}
public void RandomPress(float beat, float length, int min, int max, int whichButtons)
public void RandomPress(float beat, float length, int min, int max, int whichButtons, bool consecutive)
{
if (min > max) return;
int pressAmount = UnityEngine.Random.Range(min, max + 1);
if (pressAmount < 1) return;
List<BeatAction.Action> buttonEvents = new List<BeatAction.Action>();
for (int i = 0; i < pressAmount; i++)
if (consecutive)
{
bool dpad = UnityEngine.Random.Range(0, 2) == 1;
switch (whichButtons)
for (int i = 0; i < pressAmount; i++)
{
case (int)WhichButtonRandom.Random:
break;
case (int)WhichButtonRandom.DpadOnly:
dpad = true;
break;
case (int)WhichButtonRandom.AOnly:
dpad = false;
break;
case (int)WhichButtonRandom.AlternatingDpad:
dpad = i % 2 == 0;
break;
case (int)WhichButtonRandom.AlternatingA:
dpad = i % 2 != 0;
break;
bool dpad = UnityEngine.Random.Range(0, 2) == 1;
switch (whichButtons)
{
case (int)WhichButtonRandom.Random:
break;
case (int)WhichButtonRandom.DpadOnly:
dpad = true;
break;
case (int)WhichButtonRandom.AOnly:
dpad = false;
break;
case (int)WhichButtonRandom.AlternatingDpad:
dpad = i % 2 == 0;
break;
case (int)WhichButtonRandom.AlternatingA:
dpad = i % 2 != 0;
break;
}
float spawnBeat = beat + i * length;
buttonEvents.Add(new BeatAction.Action(spawnBeat, delegate { HostPressButton(spawnBeat, dpad); }));
}
float spawnBeat = beat + i * length;
buttonEvents.Add(new BeatAction.Action(spawnBeat, delegate { HostPressButton(spawnBeat, dpad); }));
}
else
{
for (int i = 0; i < max; i++)
{
if (pressAmount == 0) break;
if (UnityEngine.Random.Range(0, 2) == 1 && Mathf.Abs(i - max) != pressAmount) continue;
bool dpad = UnityEngine.Random.Range(0, 2) == 1;
switch (whichButtons)
{
case (int)WhichButtonRandom.Random:
break;
case (int)WhichButtonRandom.DpadOnly:
dpad = true;
break;
case (int)WhichButtonRandom.AOnly:
dpad = false;
break;
case (int)WhichButtonRandom.AlternatingDpad:
dpad = i % 2 == 0;
break;
case (int)WhichButtonRandom.AlternatingA:
dpad = i % 2 != 0;
break;
}
float spawnBeat = beat + i * length;
buttonEvents.Add(new BeatAction.Action(spawnBeat, delegate { HostPressButton(spawnBeat, dpad); }));
pressAmount--;
}
}
BeatAction.New(instance.gameObject, buttonEvents);
}
@ -311,7 +352,7 @@ namespace HeavenStudio.Games
intervalStarted = true;
}
public void PassTurn(float beat, float length, bool timeUpSound, bool consecutive, bool visualClock, bool audioClock)
public void PassTurn(float beat, float length, bool timeUpSound, bool consecutive, bool visualClock, int audioClock)
{
if (queuedInputs.Count == 0) return;
if (shouldPrepareArms)
@ -341,11 +382,12 @@ namespace HeavenStudio.Games
playerBeatInterval = beatInterval;
playerIntervalStartBeat = beat + length;
float timeUpBeat = 0f;
if (audioClock)
if (audioClock == (int)ClockAudio.Both || audioClock == (int)ClockAudio.Start)
{
Jukebox.PlayOneShotGame("quizShow/timerStart");
timeUpBeat = 0.5f;
}
}
if (audioClock == (int)ClockAudio.End) timeUpBeat = 0.5f;
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
{
@ -353,7 +395,7 @@ namespace HeavenStudio.Games
{
if (!consecutive)
{
if (audioClock) Jukebox.PlayOneShotGame("quizShow/timerStop");
if (audioClock == (int)ClockAudio.Both || audioClock == (int)ClockAudio.End) Jukebox.PlayOneShotGame("quizShow/timerStop");
contesteeLeftArmAnim.DoScaledAnimationAsync("LeftRest", 0.5f);
contesteeRightArmAnim.DoScaledAnimationAsync("RightRest", 0.5f);
shouldPrepareArms = true;

View file

@ -4,10 +4,12 @@ using UnityEngine;
using NaughtyBezierCurves;
using HeavenStudio.Util;
using UnityEngine.UIElements;
using DG.Tweening;
namespace HeavenStudio.Games.Scripts_SpaceSoccer
{
public class Ball : MonoBehaviour
public class Ball : SuperCurveObject
{
public enum State { None, Dispensing, Kicked, HighKicked, Toe };
[Header("Components")]
@ -16,10 +18,10 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
[SerializeField] private GameObject spriteHolder;
[SerializeField] private GameObject kickFX;
[Space(10)]
[SerializeField] private BezierCurve3D dispenseCurve;
[SerializeField] private BezierCurve3D kickCurve;
[SerializeField] private BezierCurve3D highKickCurve;
[SerializeField] private BezierCurve3D toeCurve;
//[SerializeField] private BezierCurve3D dispenseCurve;
//[SerializeField] private BezierCurve3D kickCurve;
//[SerializeField] private BezierCurve3D highKickCurve;
//[SerializeField] private BezierCurve3D toeCurve;
[Header("Properties")]
public float startBeat;
@ -30,17 +32,29 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
public bool canKick;
public bool waitKickRelease;
private bool lastKickLeft;
public float zValue;
private SuperCurveObject.Path kickPath;
private SuperCurveObject.Path dispensePath;
private SuperCurveObject.Path highKickPath;
private SuperCurveObject.Path toePath;
//private float currentKickPathScale = 1;
protected override void UpdateLastRealPos()
{
lastRealPos = transform.localPosition;
}
public void Init(Kicker kicker, float dispensedBeat)
{
this.kicker = kicker;
kicker.ball = this;
kicker.dispenserBeat = dispensedBeat;
float currentBeat = Conductor.instance.songPositionInBeats;
zValue = kicker.zValue;
kickPath = SpaceSoccer.instance.GetPath("Kick");
dispensePath = SpaceSoccer.instance.GetPath("Dispense");
highKickPath = SpaceSoccer.instance.GetPath("HighKick");
toePath = SpaceSoccer.instance.GetPath("Toe");
//holder.transform.localPosition = kicker.transform.GetChild(0).position;
if(currentBeat - dispensedBeat < 2f) //check if ball is currently being dispensed (should only be false if starting in the middle of the remix)
if (currentBeat - dispensedBeat < 2f) //check if ball is currently being dispensed (should only be false if starting in the middle of the remix)
{
//Debug.Log("Dispensing");
state = State.Dispensing;
@ -113,7 +127,7 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
public void Kick(bool player)
{
if (player)
Jukebox.PlayOneShotGame("spaceSoccer/ballHit");
Jukebox.PlayOneShotGame("spaceSoccer/ballHit", -1, Jukebox.GetPitchFromCents(UnityEngine.Random.Range(-38, 39), false));
lastSpriteRot = spriteHolder.transform.eulerAngles.z;
@ -121,15 +135,19 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
lastKickLeft = kicker.kickLeft;
if (kicker.kickLeft)
/*if (kicker.kickLeft)
{
kickCurve.transform.localScale = new Vector3(-1, 1);
currentKickPathScale = -1;
}
else
{
kickCurve.transform.localScale = new Vector3(1, 1);
}
kickCurve.KeyPoints[0].transform.position = holder.transform.position;
currentKickPathScale = 1;
}*/
//kickCurve.KeyPoints[0].transform.position = holder.transform.position;
//kickPath.positions[0].pos = holder.transform.position;
UpdateLastRealPos();
HitFX();
}
@ -140,8 +158,9 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
SetState(State.HighKicked);
highKickCurve.KeyPoints[0].transform.position = holder.transform.position;
//highKickCurve.KeyPoints[0].transform.position = holder.transform.position;
//highKickPath.positions[0].pos = holder.transform.position;
UpdateLastRealPos();
HitFX();
}
@ -153,14 +172,18 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
SetState(State.Toe);
toeCurve.KeyPoints[0].transform.position = holder.transform.position;
//toeCurve.KeyPoints[0].transform.position = holder.transform.position;
//toePath.positions[0].pos = holder.transform.position;
UpdateLastRealPos();
if (lastKickLeft)
{
toeCurve.KeyPoints[1].transform.localPosition = new Vector3(5.39f, 0);
//toeCurve.KeyPoints[1].transform.localPosition = new Vector3(5.39f, 0);
toePath.positions[1].pos = new Vector3(5.39f, 0);
}
else
{
toeCurve.KeyPoints[1].transform.localPosition = new Vector3(6.49f, 0);
//toeCurve.KeyPoints[1].transform.localPosition = new Vector3(6.49f, 0);
toePath.positions[1].pos = new Vector3(6.49f, 0);
}
@ -169,6 +192,7 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
private void Update()
{
float beat = Conductor.instance.songPositionInBeats;
switch (state) //handle animations
{
case State.None: //the only time any ball should ever have this state is if it's the unused offscreen ball (which is the only reason this state exists)
@ -180,10 +204,14 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
{
float normalizedBeatAnim = Conductor.instance.GetPositionFromBeat(startBeat, 2.35f);
dispenseCurve.KeyPoints[0].transform.position = new Vector3(kicker.transform.position.x - 6f, kicker.transform.position.y - 6f);
dispenseCurve.KeyPoints[1].transform.position = new Vector3(kicker.transform.position.x - 1f, kicker.transform.position.y - 6f);
//dispenseCurve.KeyPoints[0].transform.position = new Vector3(kicker.transform.GetChild(0).position.x - 6f, kicker.transform.GetChild(0).position.y - 6f);
//dispenseCurve.KeyPoints[1].transform.position = new Vector3(kicker.transform.GetChild(0).position.x - 1f, kicker.transform.GetChild(0).position.y - 6f);
holder.transform.localPosition = dispenseCurve.GetPoint(normalizedBeatAnim);
dispensePath.positions[0].pos = new Vector3(-6f, -6f);
dispensePath.positions[1].pos = new Vector3(-1f, -6f);
//holder.transform.localPosition = dispenseCurve.GetPoint(normalizedBeatAnim);
holder.transform.localPosition = GetPathPositionFromBeat(dispensePath, Mathf.Max(beat, startBeat), out float height, startBeat);
spriteHolder.transform.eulerAngles = new Vector3(0, 0, Mathf.Lerp(0f, -1440f, normalizedBeatAnim));
break;
}
@ -191,50 +219,64 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
{
float normalizedBeatAnim = Conductor.instance.GetPositionFromBeat(startBeat, 1.5f);
kickPath.positions[0].pos = lastRealPos;
if (!lastKickLeft)
{
kickCurve.KeyPoints[1].transform.position = new Vector3(kicker.transform.position.x + 0.5f, kicker.transform.position.y - 6f);
//kickCurve.KeyPoints[1].transform.position = new Vector3(kicker.transform.GetChild(0).position.x + 0.5f, kicker.transform.GetChild(0).position.y - 6f);
kickPath.positions[1].pos = new Vector3(0, -6f);
spriteHolder.transform.eulerAngles = new Vector3(0, 0, Mathf.Lerp(lastSpriteRot, lastSpriteRot - 360f, normalizedBeatAnim));
}
else
{
kickCurve.KeyPoints[1].transform.position = new Vector3(kicker.transform.position.x - 2.5f, kicker.transform.position.y - 6f);
//kickCurve.KeyPoints[1].transform.position = new Vector3(kicker.transform.GetChild(0).position.x - 2.5f, kicker.transform.GetChild(0).position.y - 6f);
kickPath.positions[1].pos = new Vector3(-2.5f, -6f);
spriteHolder.transform.eulerAngles = new Vector3(0, 0, Mathf.Lerp(lastSpriteRot, lastSpriteRot + 360f, normalizedBeatAnim));
}
holder.transform.localPosition = kickCurve.GetPoint(normalizedBeatAnim);
//holder.transform.localPosition = kickCurve.GetPoint(normalizedBeatAnim);
holder.transform.localPosition = GetPathPositionFromBeat(kickPath, Mathf.Max(beat, startBeat), out float height, startBeat);
break;
}
case State.HighKicked:
{
float normalizedBeatAnim = Conductor.instance.GetPositionFromBeat(startBeat, GetAnimLength(State.HighKicked) + 0.3f);
highKickPath.positions[0].duration = GetAnimLength(State.HighKicked) + 0.3f;
highKickCurve.KeyPoints[1].transform.position = new Vector3(kicker.transform.position.x - 3.5f, kicker.transform.position.y - 6f);
//highKickCurve.KeyPoints[1].transform.position = new Vector3(kicker.transform.GetChild(0).position.x - 3.5f, kicker.transform.GetChild(0).position.y - 6f);
holder.transform.localPosition = highKickCurve.GetPoint(normalizedBeatAnim);
highKickPath.positions[0].pos = lastRealPos;
highKickPath.positions[1].pos = new Vector3(-3.5f, -6f);
//holder.transform.localPosition = highKickCurve.GetPoint(normalizedBeatAnim);
holder.transform.localPosition = GetPathPositionFromBeat(highKickPath, Mathf.Max(beat, startBeat), out float height, startBeat);
spriteHolder.transform.eulerAngles = new Vector3(0, 0, Mathf.Lerp(lastSpriteRot, lastSpriteRot + 360f, normalizedBeatAnim));
break;
}
case State.Toe:
{
float normalizedBeatAnim = Conductor.instance.GetPositionFromBeat(startBeat, GetAnimLength(State.Toe) + 0.35f);
toePath.positions[0].duration = GetAnimLength(State.Toe) + 0.35f;
toePath.positions[0].pos = lastRealPos;
if (!lastKickLeft)
{
toeCurve.KeyPoints[1].transform.position = new Vector3(kicker.transform.position.x + 0.5f, kicker.transform.position.y - 6f);
//toeCurve.KeyPoints[1].transform.position = new Vector3(kicker.transform.GetChild(0).position.x + 0.5f, kicker.transform.GetChild(0).position.y - 6f);
toePath.positions[1].pos = new Vector3(-1.5f, -6f);
}
else
{
toeCurve.KeyPoints[1].transform.position = new Vector3(kicker.transform.position.x - 1.0f, kicker.transform.position.y - 6f);
//toeCurve.KeyPoints[1].transform.position = new Vector3(kicker.transform.GetChild(0).position.x - 1.0f, kicker.transform.GetChild(0).position.y - 6f);
toePath.positions[1].pos = new Vector3(-0.5f, -6f);
}
holder.transform.localPosition = toeCurve.GetPoint(normalizedBeatAnim);
//holder.transform.localPosition = toeCurve.GetPoint(normalizedBeatAnim);
holder.transform.localPosition = GetPathPositionFromBeat(toePath, Mathf.Max(beat, startBeat), out float height, startBeat);
spriteHolder.transform.eulerAngles = new Vector3(0, 0, Mathf.Lerp(lastSpriteRot, -860f, normalizedBeatAnim));
break;
}
}
holder.transform.position = new Vector3(holder.transform.position.x, holder.transform.position.y, zValue);
holder.transform.position = new Vector3(holder.transform.position.x, holder.transform.position.y, kicker.transform.GetChild(0).position.z);
}
private void HitFX()

View file

@ -15,14 +15,20 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
public bool canHighKick;
private bool kickPrepare = false;
public bool kickLeft;
bool kickLeftWhiff;
public float dispenserBeat; //unused
public int kickTimes = 0;
public bool player;
public float zValue;
private string animName = "Enter";
private float animLength;
private float animStartBeat;
private EasingFunction.Ease ease;
bool stopBall;
[Header("Components")]
private Animator anim;
public Ball ball;
[SerializeField] private Animator enterExitAnim;
PlayerActionEvent nextHit;
PlayerActionEvent nextAutoKick;
@ -33,6 +39,17 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
anim = GetComponent<Animator>();
}
public void SetAnimParams(float beat, float length, string anim, int easeToPut)
{
animStartBeat = beat;
animLength = length;
animName = anim;
ease = (EasingFunction.Ease)easeToPut;
EasingFunction.Function func = EasingFunction.GetEasingFunction(ease);
float newAnimPos = func(0, 1, 0);
enterExitAnim.DoNormalizedAnimation(animName, newAnimPos);
}
public void DispenseBall(float beat)
{
if (player)
@ -41,14 +58,30 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
}
else
{
BeatAction.New(this.gameObject, new List<BeatAction.Action>(){
new BeatAction.Action(beat + ball.GetAnimLength(Ball.State.Dispensing), delegate { KickCheck(true, false, beat + ball.GetAnimLength(Ball.State.Dispensing)); }),
});
float beatToKick = beat + ball.GetAnimLength(Ball.State.Dispensing);
if (beatToKick < Conductor.instance.songPositionInBeats) beatToKick = ball.nextAnimBeat;
if (ball.state == Ball.State.HighKicked)
{
BeatAction.New(this.gameObject, new List<BeatAction.Action>()
{
new BeatAction.Action(beatToKick - 0.5f, delegate { Kick(true, true); }),
new BeatAction.Action(beatToKick, delegate { Toe(true); }),
new BeatAction.Action(beatToKick + ball.GetAnimLength(Ball.State.Toe), delegate { KickCheck(true, false, beatToKick + ball.GetAnimLength(Ball.State.Toe)); }),
});
}
else
{
BeatAction.New(this.gameObject, new List<BeatAction.Action>()
{
new BeatAction.Action(beatToKick, delegate { KickCheck(true, false, beatToKick); }),
});
}
}
}
public void Kick(bool hit, bool highKick = false)
{
if (stopBall) return;
aceTimes = 0;
if (player)
@ -56,29 +89,59 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
Jukebox.PlayOneShotGame("spaceSoccer/kick");
}
if (highKick)
if (hit)
{
if (kickLeft)
if (highKick)
{
anim.Play("HighKickLeft_0", 0, 0);
if (kickLeft)
{
anim.DoScaledAnimationAsync("HighKickLeft_0", 0.5f);
}
else
{
anim.DoScaledAnimationAsync("HighKickRight_0", 0.5f);
}
}
else
{
anim.Play("HighKickRight_0", 0, 0);
if (kickLeft)
{
anim.DoScaledAnimationAsync("KickLeft", 0.5f);
}
else
{
anim.DoScaledAnimationAsync("KickRight", 0.5f);
}
}
}
else
{
if (kickLeft)
if (highKick)
{
anim.Play("KickLeft", 0, 0);
if (kickLeftWhiff)
{
anim.DoScaledAnimationAsync("HighKickLeft_0", 0.5f);
}
else
{
anim.DoScaledAnimationAsync("HighKickRight_0", 0.5f);
}
}
else
{
anim.Play("KickRight", 0, 0);
if (kickLeftWhiff)
{
anim.DoScaledAnimationAsync("KickLeft", 0.5f);
}
else
{
anim.DoScaledAnimationAsync("KickRight", 0.5f);
}
}
kickLeftWhiff = !kickLeftWhiff;
}
if (ball == null) return;
if (highKick == false)
@ -95,52 +158,61 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
public void HighKick(bool hit)
{
if (stopBall) return;
kickTimes++;
if (kickLeft)
if (hit)
{
anim.Play("HighKickLeft_0", 0, 0);
if (kickLeft)
{
anim.DoScaledAnimationAsync("HighKickLeft_0", 0.5f);
}
else
{
anim.DoScaledAnimationAsync("HighKickRight_0", 0.5f);
}
}
else
{
anim.Play("HighKickRight_0", 0, 0);
if (kickLeftWhiff)
{
anim.DoScaledAnimationAsync("HighKickLeft_0", 0.5f);
}
else
{
anim.DoScaledAnimationAsync("HighKickRight_0", 0.5f);
}
kickLeftWhiff = !kickLeftWhiff;
}
if (player) Jukebox.PlayOneShotGame("spaceSoccer/highkicktoe1");
if (hit && ball)
{
ball.HighKick();
if (player)
Jukebox.PlayOneShotGame("spaceSoccer/highkicktoe1_hit");
}
else
{
if (player)
Jukebox.PlayOneShotGame("spaceSoccer/highkicktoe1");
if (player) Jukebox.PlayOneShotGame("spaceSoccer/highkicktoe1_hit");
}
}
public void Toe(bool hit)
{
if (stopBall) return;
if (kickLeft)
{
anim.Play("ToeLeft", 0, 0);
anim.DoScaledAnimationAsync("ToeLeft", 0.5f);
}
else
{
anim.Play("ToeRight", 0, 0);
anim.DoScaledAnimationAsync("ToeRight", 0.5f);
}
if (player)
{
Jukebox.PlayOneShotGame("spaceSoccer/highkicktoe3");
if (hit && ball)
{
Jukebox.PlayOneShotGame("spaceSoccer/highkicktoe3_hit");
}
else
{
Jukebox.PlayOneShotGame("spaceSoccer/highkicktoe3");
}
}
if (hit && ball)
@ -152,6 +224,13 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
private void Update()
{
float normalizedBeat = Conductor.instance.GetPositionFromBeat(animStartBeat, animLength);
if (normalizedBeat >= 0 && normalizedBeat <= 1)
{
EasingFunction.Function func = EasingFunction.GetEasingFunction(ease);
float newAnimPos = func(0, 1, normalizedBeat);
enterExitAnim.DoNormalizedAnimation(animName, newAnimPos);
}
if (kickTimes % 2 == 0)
{
kickLeft = false;
@ -186,6 +265,7 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
if (player)
{
if (stopBall) return;
if (PlayerInput.Pressed() && !game.IsExpectingInputNow(InputType.STANDARD_DOWN))
{
if (ball == null)
@ -211,6 +291,7 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
private void KickCheck(bool hit, bool overrideState = false, float beat = 0f)
{
if (stopBall) return;
if (canHighKick)
{
HighKick(hit);
@ -250,16 +331,26 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
}
public void StopBall(bool stop)
{
stopBall = stop;
if (ball != null && stop) Destroy(ball.gameObject);
}
void MissBall(float targetBeat)
{
if (stopBall) return;
var cond = Conductor.instance;
ball = null;
// queue the miss sound
MultiSound.Play(new MultiSound.Sound[] { new MultiSound.Sound("spaceSoccer/missNeutral", targetBeat + (float)cond.SecsToBeats(Minigame.EndTime()-1, cond.GetBpmAtBeat(targetBeat))) });
MultiSound.Play(new MultiSound.Sound[] { new MultiSound.Sound("spaceSoccer/missNeutral", targetBeat + (float)cond.SecsToBeats(Minigame.EndTime()-1,
cond.GetBpmAtBeat(targetBeat)), Jukebox.GetPitchFromCents(UnityEngine.Random.Range(-75, 75), false)) });
}
private void KickJust(PlayerActionEvent caller, float state)
{
if (stopBall) return;
if (ball == null || state >= 1f || state <= -1f) { //todo: proper near miss feedback
KickCheck(false, true);
MissBall(caller.startBeat + caller.timer);
@ -283,6 +374,7 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
private void Miss(PlayerActionEvent caller)
{
if (stopBall) return;
if (ball != null)
MissBall(caller.startBeat + caller.timer);
@ -291,6 +383,8 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
private void ToeJust(PlayerActionEvent caller, float state)
{
if (stopBall) return;
if (ball == null || (!ball.canKick) || state >= 1f || state <= -1f) { //todo: proper near miss feedback
Toe(false);
MissBall(caller.startBeat + caller.timer);
@ -303,6 +397,8 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
private void ToePrepareJust(PlayerActionEvent caller, float state)
{
if (stopBall) return;
//autoplay only
Kick(true, true);
}
@ -315,6 +411,7 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
nextHit.Disable();
if (nextAutoKick != null)
nextAutoKick.Disable();
if (ball != null) Destroy(ball.gameObject);
}
}
}

View file

@ -1,7 +1,7 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using HeavenStudio.Util;
namespace HeavenStudio.Games.Loaders
@ -32,22 +32,79 @@ namespace HeavenStudio.Games.Loaders
},
new GameAction("npc kickers enter or exit", "NPC Kickers Enter or Exit")
{
function = delegate { var e = eventCaller.currentEntity; SpaceSoccer.instance.NPCKickersEnterOrExit(e.beat, e.length, e["toggle"]); },
function = delegate { var e = eventCaller.currentEntity; SpaceSoccer.instance.NPCKickersEnterOrExit(e.beat, e.length, e["choice"], e["ease"], e["amount"], e["x"], e["y"], e["z"], e["override"], e["preset"]); },
defaultLength = 4f,
parameters = new List<Param>()
{
new Param("toggle", false, "Should Exit?", "Whether the kickers should exit or enter.")
new Param("preset", SpaceSoccer.EnterExitPresets.FiveKickers, "Preset", "Which preset should be used?"),
new Param("choice", SpaceSoccer.AnimationToPlay.Enter, "Enter Or Exit", "Whether the kickers should exit or enter."),
new Param("ease", EasingFunction.Ease.Linear, "Ease", "The Ease of the entering or exiting."),
new Param("amount", new EntityTypes.Integer(2, 30, 5), "Amount", "Amount of Space Kickers."),
new Param("x", new EntityTypes.Float(-30, 30, 2f), "X Distance", "How much distance should there be between the space kickers on the x axis?"),
new Param("y", new EntityTypes.Float(-30, 30, -0.5f), "Y Distance", "How much distance should there be between the space kickers on the y axis?"),
new Param("z", new EntityTypes.Float(-30, 30, 1.25f), "Z Distance", "How much distance should there be between the space kickers on the z axis?"),
new Param("override", true, "Override Easing", "Should this block override the easing of the space kickers' positions?")
},
resizable = true
},
new GameAction("npc kickers instant enter or exit", "NPC Kickers Instant Enter or Exit")
new GameAction("easePos", "Ease NPC Space Kicker Distances")
{
function = delegate { var e = eventCaller.currentEntity; SpaceSoccer.instance.InstantNPCKickersEnterOrExit(e["toggle"]); },
defaultLength = 0.5f,
function = delegate {var e = eventCaller.currentEntity; SpaceSoccer.instance.EaseSpaceKickersPositions(e.beat, e.length, e["ease"], e["x"], e["y"], e["z"]); },
defaultLength = 4f,
resizable = true,
parameters = new List<Param>()
{
new Param("toggle", false, "Should Exit?", "Whether the kickers should be exited or entered.")
},
new Param("x", new EntityTypes.Float(-30, 30, 2f), "X Distance", "How much distance should there be between the space kickers on the x axis?"),
new Param("y", new EntityTypes.Float(-30, 30, -0.5f), "Y Distance", "How much distance should there be between the space kickers on the y axis?"),
new Param("z", new EntityTypes.Float(-30, 30, 1.25f), "Z Distance", "How much distance should there be between the space kickers on the z axis?"),
new Param("ease", EasingFunction.Ease.Linear, "Ease", "The Ease of the space kickers moving."),
}
},
new GameAction("pMove", "Move Player")
{
function = delegate {var e = eventCaller.currentEntity; SpaceSoccer.instance.MovePlayerKicker(e.beat, e.length, e["ease"], e["x"], e["y"], e["z"], e["sound"], e["preset"]); },
defaultLength = 4f,
resizable = true,
parameters = new List<Param>()
{
new Param("preset", SpaceSoccer.PlayerPresets.LaunchStart, "Preset", "Which preset should be used?"),
new Param("x", new EntityTypes.Float(-30, 30, 0f), "X Pos", "Which position should the player move to on the x axis?"),
new Param("y", new EntityTypes.Float(-30, 30, 0f), "Y Pos", "Which position should the player move to on the y axis?"),
new Param("z", new EntityTypes.Float(-30, 30, 0f), "Z Pos", "Which position should the player move to on the z axis?"),
new Param("ease", EasingFunction.Ease.Linear, "Ease", "The Ease of the space kickers moving."),
new Param("sound", SpaceSoccer.LaunchSoundToPlay.None, "Sound", "Which launch sound should be played at the start of this block?")
}
},
new GameAction("changeBG", "Change Background Color")
{
function = delegate {var e = eventCaller.currentEntity; SpaceSoccer.instance.FadeBackgroundColor(e["start"], e["end"], e["startDots"], e["endDots"], e.length, e["toggle"]); },
defaultLength = 1f,
resizable = true,
parameters = new List<Param>()
{
new Param("start", SpaceSoccer.defaultBGColor, "Start Color", "The start color for the fade or the color that will be switched to if -instant- is ticked on."),
new Param("end", SpaceSoccer.defaultBGColor, "End Color", "The end color for the fade."),
new Param("startDots", Color.white, "Start Color (Dots)", "The start color for the fade or the color that will be switched to if -instant- is ticked on."),
new Param("endDots", Color.white, "End Color (Dots)", "The end color for the fade."),
new Param("toggle", false, "Instant", "Should the background instantly change color?")
}
},
new GameAction("scroll", "Scrolling Background")
{
function = delegate { var e = eventCaller.currentEntity; SpaceSoccer.instance.UpdateScrollSpeed(e.beat, e["x"], e["y"]); },
defaultLength = 1f,
parameters = new List<Param>() {
new Param("x", new EntityTypes.Float(-5f, 5f, 0.045f), "Horizontal", "How many horizontal loops in 1 beat?"),
new Param("y", new EntityTypes.Float(-5f, 5f, 0.16f), "Vertical", "How many vertical loops in 1 beat?"),
}
},
new GameAction("stopBall", "Stop Ball")
{
function = delegate { SpaceSoccer.instance.StopBall(eventCaller.currentEntity["toggle"]); },
parameters = new List<Param>()
{
new Param("toggle", true, "Stop ball?", "Should the ball be stopped? If ticked off the kickers will regain their ability to use the ball.")
}
},
// This is still here for "backwards-compatibility" but is hidden in the editor (it does absolutely nothing however)
new GameAction("keep-up", "")
@ -56,6 +113,29 @@ namespace HeavenStudio.Games.Loaders
resizable = true,
hidden = true
},
new GameAction("npc kickers instant enter or exit", "NPC Kickers Instant Enter or Exit")
{
function = delegate
{
var e = eventCaller.currentEntity;
int choice;
if (e["toggle"])
{
choice = (int)SpaceSoccer.AnimationToPlay.Exit;
}
else
{
choice = (int)SpaceSoccer.AnimationToPlay.Enter;
}
SpaceSoccer.instance.NPCKickersEnterOrExit(e.beat, e.length, choice, (int)EasingFunction.Ease.Instant, 5, 1.75f, 0.25f, 0.75f, true, (int)SpaceSoccer.EnterExitPresets.Custom);
},
defaultLength = 0.5f,
parameters = new List<Param>()
{
new Param("toggle", false, "Should Exit?", "Whether the kickers should be exited or entered.")
},
hidden = true
},
});
}
}
@ -64,46 +144,160 @@ namespace HeavenStudio.Games.Loaders
namespace HeavenStudio.Games
{
using Scripts_SpaceSoccer;
using HeavenStudio.Common;
using UnityEngine.Rendering;
public class SpaceSoccer : Minigame
{
public enum EnterExitPresets
{
FiveKickers,
DuoKickers,
Custom
}
public enum PlayerPresets
{
LaunchStart = 0,
LaunchEnd = 1,
Custom = 2
}
public enum LaunchSoundToPlay
{
None = 0,
LaunchStart = 1,
LaunchEnd = 2
}
public enum AnimationToPlay
{
Enter = 0,
Exit = 1
}
private static Color _defaultBGColor;
public static Color defaultBGColor
{
get
{
ColorUtility.TryParseHtmlString("#FF7D27", out _defaultBGColor);
return _defaultBGColor;
}
}
[Header("Components")]
[SerializeField] private GameObject kickerPrefab;
[SerializeField] private GameObject ballRef;
[SerializeField] private List<Kicker> kickers;
[SerializeField] private GameObject Background;
[SerializeField] private Sprite[] backgroundSprite;
[SerializeField] private Animator npcKickersAnim;
[SerializeField] private SuperScroll backgroundSprite;
[SerializeField] private SpriteRenderer bg;
[Header("Properties")]
[SerializeField] private bool ballDispensed; //unused
float npcMoveLength = 4f;
float npcMoveStartBeat;
bool npcMoving;
string npcMoveAnimName;
[SerializeField] SuperCurveObject.Path[] ballPaths;
public bool ballDispensed;
float lastDispensedBeat;
float scrollBeat;
float scrollOffsetX;
float scrollOffsetY;
float currentScrollLengthX = 0.045f;
float currentScrollLengthY = 0.16f;
Tween bgColorTween;
Tween dotColorTween;
#region Space Kicker Position Easing
float easeBeat;
float easeLength;
EasingFunction.Ease lastEase;
Vector3 lastPos = new Vector3();
Vector3 currentPos = new Vector3();
float easeBeatP;
float easeLengthP;
EasingFunction.Ease lastEaseP;
Vector3 lastPosP = new Vector3();
Vector3 currentPosP = new Vector3();
#endregion
public static SpaceSoccer instance { get; private set; }
private void Awake()
{
instance = this;
npcKickersAnim.Play("NPCKickersExited", 0, 0);
/*for (int x = 0; x < Random.Range(9, 12); x++)
}
new void OnDrawGizmos()
{
base.OnDrawGizmos();
foreach (SuperCurveObject.Path path in ballPaths)
{
for (int y = 0; y < Random.Range(6, 9); y++)
if (path.preview)
{
GameObject test = new GameObject("test");
test.transform.parent = Background.transform;
test.AddComponent<SpriteRenderer>().sprite = backgroundSprite[Random.Range(0, 2)];
test.GetComponent<SpriteRenderer>().sortingOrder = -50;
test.transform.localPosition = new Vector3(Random.Range(-15f, 15f), Random.Range(-15f, 15f));
test.transform.localScale = new Vector3(0.52f, 0.52f);
ballRef.GetComponent<Ball>().DrawEditorGizmo(path);
}
}*/
}
}
private void Update()
{
if (npcMoving) npcKickersAnim.DoScaledAnimation(npcMoveAnimName, npcMoveStartBeat, npcMoveLength);
var cond = Conductor.instance;
float normalizedX = (cond.songPositionInBeats - scrollBeat) * currentScrollLengthX;
float normalizedY = (cond.songPositionInBeats - scrollBeat) * currentScrollLengthY;
backgroundSprite.NormalizedX = -scrollOffsetX - normalizedX;
backgroundSprite.NormalizedY = -scrollOffsetY - normalizedY;
float normalizedEaseBeat = cond.GetPositionFromBeat(easeBeat, easeLength);
if (normalizedEaseBeat <= 1 && normalizedEaseBeat > 0)
{
EasingFunction.Function func = EasingFunction.GetEasingFunction(lastEase);
float newPosX = func(lastPos.x, currentPos.x, normalizedEaseBeat);
float newPosY = func(lastPos.y, currentPos.y, normalizedEaseBeat);
float newPosZ = func(lastPos.z, currentPos.z, normalizedEaseBeat);
UpdateKickersPositions(newPosX, newPosY, newPosZ);
}
float normalizedPBeat = cond.GetPositionFromBeat(easeBeatP, easeLengthP);
if (normalizedPBeat <= 1 && normalizedPBeat > 0)
{
EasingFunction.Function func = EasingFunction.GetEasingFunction(lastEaseP);
float newPosX = func(lastPosP.x, currentPosP.x, normalizedPBeat);
float newPosY = func(lastPosP.y, currentPosP.y, normalizedPBeat);
float newPosZ = func(lastPosP.z, currentPosP.z, normalizedPBeat);
kickers[0].transform.parent.position = new Vector3(3.384f - newPosX, newPosY, newPosZ);
}
}
public void StopBall(bool stop)
{
foreach (var kicker in kickers)
{
kicker.StopBall(stop);
}
}
public void NPCKickersEnterOrExit(float beat, float length, int animToPut, int easeToPut, int amount, float xDistance, float yDistance, float zDistance, bool overrideEasing, int preset)
{
switch (preset)
{
case (int)EnterExitPresets.Custom:
UpdateSpaceKickers(amount, xDistance, yDistance, zDistance, overrideEasing);
break;
case (int)EnterExitPresets.DuoKickers:
UpdateSpaceKickers(2, 7, -6, 10, overrideEasing);
break;
case (int)EnterExitPresets.FiveKickers:
UpdateSpaceKickers(5, 2, -0.5f, 1.25f, overrideEasing);
break;
}
string animName = "Enter";
switch (animToPut)
{
case (int)AnimationToPlay.Enter:
animName = "Enter";
break;
case (int)AnimationToPlay.Exit:
animName = "Exit";
break;
}
foreach (var kicker in kickers)
{
if (kicker.player) continue;
kicker.SetAnimParams(beat, length, animName, easeToPut);
}
}
public override void OnGameSwitch(float beat)
@ -123,35 +317,140 @@ namespace HeavenStudio.Games
}
}
public void NPCKickersEnterOrExit(float beat, float length, bool shouldExit)
public SuperCurveObject.Path GetPath(string name)
{
npcMoving = true;
npcMoveLength = length;
npcMoveStartBeat = beat;
npcMoveAnimName = shouldExit ? "NPCKickersExit" : "NPCKickersEnter";
npcKickersAnim.DoScaledAnimation(npcMoveAnimName, npcMoveStartBeat, npcMoveLength);
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
foreach (SuperCurveObject.Path path in ballPaths)
{
new BeatAction.Action(beat + length - 0.1f, delegate { npcMoving = false; }),
});
if (path.name == name)
{
return path;
}
}
return default(SuperCurveObject.Path);
}
public void InstantNPCKickersEnterOrExit(bool shouldExit)
public void UpdateScrollSpeed(float beat, float scrollSpeedX, float scrollSpeedY)
{
npcKickersAnim.Play(shouldExit ? "NPCKickersExited" : "NPCKickersPresent", 0, 0);
var cond = Conductor.instance;
scrollOffsetX = (cond.songPositionInBeats - scrollBeat) * currentScrollLengthX;
scrollOffsetY = (cond.songPositionInBeats - scrollBeat) * currentScrollLengthY;
currentScrollLengthX = scrollSpeedX;
currentScrollLengthY = scrollSpeedY;
scrollBeat = beat;
}
public void Dispense(float beat, bool playSound = true)
public void EaseSpaceKickersPositions(float beat, float length, int ease, float xDistance, float yDistance, float zDistance)
{
easeBeat = beat;
easeLength = length;
lastEase = (EasingFunction.Ease)ease;
lastPos = currentPos;
currentPos = new Vector3(xDistance, yDistance, zDistance);
}
public void UpdateKickersPositions(float xDistance, float yDistance, float zDistance)
{
for (int i = 1; i < kickers.Count; i++)
{
kickers[i].transform.parent.position = new Vector3(3.384f - xDistance * i, -yDistance * i, zDistance * i);
CircularMotion circularMotion = kickers[i].GetComponent<CircularMotion>();
circularMotion.width = 0.85f - Mathf.Pow(zDistance * 10f, -1f);
circularMotion.height = 0.5f - Mathf.Pow(zDistance * 10f, -1f);
}
}
public void MovePlayerKicker(float beat, float length, int ease, float xPos, float yPos, float zPos, int soundToPlay, int preset)
{
switch (preset)
{
case (int)PlayerPresets.Custom:
break;
case (int)PlayerPresets.LaunchStart:
lastEaseP = EasingFunction.Ease.EaseInOutCubic;
xPos = -6;
yPos = 15;
zPos = 0;
soundToPlay = (int)LaunchSoundToPlay.LaunchStart;
break;
case (int)PlayerPresets.LaunchEnd:
lastEaseP = EasingFunction.Ease.EaseInOutQuint;
xPos = -4;
yPos = 15;
zPos = 0;
soundToPlay = (int)LaunchSoundToPlay.LaunchEnd;
break;
}
easeBeatP = beat;
easeLengthP = length;
lastEaseP = (EasingFunction.Ease)ease;
lastPosP = currentPosP;
currentPosP = new Vector3(-xPos, yPos, -zPos);
switch (soundToPlay)
{
case (int)LaunchSoundToPlay.None:
break;
case (int)LaunchSoundToPlay.LaunchStart:
Jukebox.PlayOneShotGame("spaceSoccer/jet1");
break;
case (int)LaunchSoundToPlay.LaunchEnd:
Jukebox.PlayOneShotGame("spaceSoccer/jet2");
break;
}
}
public void UpdateSpaceKickers(int amount, float xDistance = 1.75f, float yDistance = 0.25f, float zDistance = 0.75f, bool overrideEasing = true)
{
for (int i = kickers.Count - 1; i > 0; i--)
{
if (i >= amount)
{
Kicker kickerToDestroy = kickers[i];
kickers.Remove(kickerToDestroy);
Destroy(kickerToDestroy.transform.parent.gameObject);
}
}
if (overrideEasing)
{
UpdateKickersPositions(xDistance, yDistance, zDistance);
currentPos = new Vector3(xDistance, yDistance, zDistance);
}
for (int i = kickers.Count; i < amount; i++)
{
Transform kickerHolder = Instantiate(kickerPrefab, transform).transform;
kickerHolder.transform.position = new Vector3(kickerHolder.transform.position.x - xDistance * i, kickerHolder.transform.position.y - yDistance * i, kickerHolder.transform.position.z + zDistance * i);
Kicker spawnedKicker = kickerHolder.GetChild(0).GetComponent<Kicker>();
CircularMotion circularMotion = spawnedKicker.GetComponent<CircularMotion>();
circularMotion.width = 0.85f - Mathf.Pow(zDistance * 10f, -1f);
circularMotion.height = 0.5f - Mathf.Pow(zDistance * 10f, -1f);
circularMotion.timeOffset = kickers[0].GetComponent<CircularMotion>().timeCounter;
if (0 > zDistance)
{
spawnedKicker.GetComponent<SortingGroup>().sortingOrder = i;
}
else
{
spawnedKicker.GetComponent<SortingGroup>().sortingOrder = -i;
}
kickers.Add(spawnedKicker);
kickerHolder.gameObject.SetActive(true);
}
if (ballDispensed) Dispense(lastDispensedBeat, false, true);
}
public void Dispense(float beat, bool playSound = true, bool ignorePlayer = false)
{
if (!ballDispensed) lastDispensedBeat = beat;
ballDispensed = true;
for (int i = 0; i < kickers.Count; i++)
{
Kicker kicker = kickers[i];
if (i == 0) kicker.player = true;
if (kicker.ball != null) return;
if (kicker.ball != null || (ignorePlayer && i == 0)) continue;
GameObject ball = Instantiate(ballRef, transform);
GameObject ball = Instantiate(ballRef, kicker.transform.GetChild(0));
ball.SetActive(true);
Ball ball_ = ball.GetComponent<Ball>();
ball_.Init(kicker, beat);
@ -180,6 +479,33 @@ namespace HeavenStudio.Games
new MultiSound.Sound("spaceSoccer/dispenseTumble6B",beat + 1.75f),
}, forcePlay:true);
}
public void ChangeBackgroundColor(Color color, Color dotColor, float beats)
{
var seconds = Conductor.instance.secPerBeat * beats;
if (bgColorTween != null)
bgColorTween.Kill(true);
if (dotColorTween != null)
dotColorTween.Kill(true);
if (seconds == 0)
{
bg.color = color;
backgroundSprite.Material.SetColor("_Color", dotColor);
}
else
{
bgColorTween = bg.DOColor(color, seconds);
dotColorTween = backgroundSprite.Material.DOColor(dotColor, seconds);
}
}
public void FadeBackgroundColor(Color start, Color end, Color startDot, Color endDot, float beats, bool instant)
{
ChangeBackgroundColor(start, startDot, 0f);
if (!instant) ChangeBackgroundColor(end, endDot, beats);
}
}
}

View file

@ -113,7 +113,7 @@ namespace HeavenStudio.Util
/// Unpitched, non-scheduled, non-looping sounds are played using a global One-Shot audio source that doesn't create a Sound object.
/// Looped sounds return their created Sound object so they can be canceled after creation.
/// </summary>
public static Sound PlayOneShot(string name, float beat = -1, float pitch = 1f, float volume = 1f, bool looping = false, string game = null)
public static Sound PlayOneShot(string name, float beat = -1, float pitch = 1f, float volume = 1f, bool looping = false, string game = null, float offset = 0f)
{
AudioClip clip = null;
if (game != null)
@ -153,6 +153,7 @@ namespace HeavenStudio.Util
snd.pitch = pitch;
snd.volume = volume;
snd.looping = looping;
snd.offset = offset;
// snd.pitch = (clip.length / Conductor.instance.secPerBeat);
GameManager.instance.SoundObjects.Add(oneShot);
@ -224,13 +225,13 @@ namespace HeavenStudio.Util
/// Unpitched, non-scheduled, non-looping sounds are played using a global One-Shot audio source that doesn't create a Sound object.
/// Looped sounds return their created Sound object so they can be canceled after creation.
/// </summary>
public static Sound PlayOneShotGame(string name, float beat = -1, float pitch = 1f, float volume = 1f, bool looping = false, bool forcePlay = false)
public static Sound PlayOneShotGame(string name, float beat = -1, float pitch = 1f, float volume = 1f, bool looping = false, bool forcePlay = false, float offset = 0f)
{
string gameName = name.Split('/')[0];
var inf = GameManager.instance.GetGameInfo(gameName);
if (GameManager.instance.currentGame == gameName || forcePlay)
{
return PlayOneShot($"games/{name}", beat, pitch, volume, looping, inf.usesAssetBundle ? gameName : null);
return PlayOneShot($"games/{name}", beat, pitch, volume, looping, inf.usesAssetBundle ? gameName : null, offset);
}
return null;

View file

@ -48,9 +48,9 @@ namespace HeavenStudio.Util
{
Util.Sound s;
if (game)
s = Jukebox.PlayOneShotGame(sounds[i].name, sounds[i].beat - Conductor.instance.GetRestFromRealTime(sounds[i].offset), sounds[i].pitch, sounds[i].volume, sounds[i].looping, forcePlay);
s = Jukebox.PlayOneShotGame(sounds[i].name, sounds[i].beat, sounds[i].pitch, sounds[i].volume, sounds[i].looping, forcePlay, sounds[i].offset);
else
s = Jukebox.PlayOneShot(sounds[i].name, sounds[i].beat - Conductor.instance.GetRestFromRealTime(sounds[i].offset), sounds[i].pitch, sounds[i].volume, sounds[i].looping);
s = Jukebox.PlayOneShot(sounds[i].name, sounds[i].beat, sounds[i].pitch, sounds[i].volume, sounds[i].looping, null, sounds[i].offset);
ms.playingSounds.Add(s);
}

View file

@ -26,6 +26,7 @@ namespace HeavenStudio.Util
private double startTime;
public float beat;
public float offset;
public float scheduledPitch = 1f;
bool playInstant = false;
@ -52,7 +53,7 @@ namespace HeavenStudio.Util
{
playInstant = false;
scheduledPitch = cnd.SongPitch;
startTime = (AudioSettings.dspTime + (cnd.GetSongPosFromBeat(beat) - cnd.songPositionAsDouble)/(double)scheduledPitch);
startTime = (AudioSettings.dspTime + (cnd.GetSongPosFromBeat(beat) - cnd.songPositionAsDouble)/(double)scheduledPitch) - offset;
audioSource.PlayScheduled(startTime);
}
}

View file

@ -0,0 +1,21 @@
Shader "Unlit/TransparentColored" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
}
SubShader {
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
ZWrite Off
Lighting Off
Fog { Mode Off }
Blend SrcAlpha OneMinusSrcAlpha
Pass {
Color [_Color]
SetTexture [_MainTex] { combine texture * primary }
}
}
}

View file

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 6edf21a3fdd28154ab40e23fb0660133
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
preprocessorOverride: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,80 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: UnlitTransparentColored
m_Shader: {fileID: 4800000, guid: 6edf21a3fdd28154ab40e23fb0660133, type: 3}
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c67fd87c29c05df4bbff1d197a37711e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant: