diff --git a/Assets/Resources/Prefabs/Games/Fillbots/MediumBot.prefab b/Assets/Resources/Prefabs/Games/Fillbots/MediumBot.prefab index e631ebc10..2422d5d75 100644 --- a/Assets/Resources/Prefabs/Games/Fillbots/MediumBot.prefab +++ b/Assets/Resources/Prefabs/Games/Fillbots/MediumBot.prefab @@ -289,7 +289,7 @@ SpriteRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3} - m_Color: {r: 1, g: 0, b: 0, a: 1} + m_Color: {r: 0, g: 1, b: 0, a: 1} m_FlipX: 0 m_FlipY: 0 m_DrawMode: 0 diff --git a/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/Beyond.anim b/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/Beyond.anim new file mode 100644 index 000000000..b26d03473 --- /dev/null +++ b/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/Beyond.anim @@ -0,0 +1,95 @@ +%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: Beyond + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: -621957946, guid: 2d1fc53f689005645877ec3aa26a04aa, type: 3} + - time: 0.06666667 + value: {fileID: -1228183043, guid: 2d1fc53f689005645877ec3aa26a04aa, type: 3} + - time: 0.13333334 + value: {fileID: -1292152913, guid: 2d1fc53f689005645877ec3aa26a04aa, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: -621957946, guid: 2d1fc53f689005645877ec3aa26a04aa, type: 3} + - {fileID: -1228183043, guid: 2d1fc53f689005645877ec3aa26a04aa, type: 3} + - {fileID: -1292152913, guid: 2d1fc53f689005645877ec3aa26a04aa, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.15 + 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: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: + - time: 0 + functionName: SetMask + data: + objectReferenceParameter: {fileID: 0} + floatParameter: 0 + intParameter: 0 + messageOptions: 0 + - time: 0.06666667 + functionName: SetMask + data: + objectReferenceParameter: {fileID: 0} + floatParameter: 0 + intParameter: 3 + messageOptions: 0 + - time: 0.13333334 + functionName: SetMask + data: + objectReferenceParameter: {fileID: 0} + floatParameter: 0 + intParameter: 4 + messageOptions: 0 diff --git a/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/Beyond.anim.meta b/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/Beyond.anim.meta new file mode 100644 index 000000000..0837665b4 --- /dev/null +++ b/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/Beyond.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bc64744eaf5026441954d6d473138e4c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/Beyond2.anim b/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/Beyond2.anim new file mode 100644 index 000000000..0620c46e9 --- /dev/null +++ b/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/Beyond2.anim @@ -0,0 +1,191 @@ +%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: Beyond2 + 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.2, y: 0, z: 0} + inSlope: {x: Infinity, y: 0, z: 0} + outSlope: {x: Infinity, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.06666667 + value: {x: -0.2, y: 0, z: 0} + inSlope: {x: Infinity, y: 0, z: 0} + outSlope: {x: Infinity, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.13333334 + value: {x: 0.2, y: 0, z: 0} + inSlope: {x: Infinity, y: 0, z: 0} + outSlope: {x: Infinity, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: -1292152913, guid: 2d1fc53f689005645877ec3aa26a04aa, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: -1292152913, guid: 2d1fc53f689005645877ec3aa26a04aa, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.13333334 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.2 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.06666667 + value: -0.2 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.13333334 + value: 0.2 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + 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: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + 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: + - time: 0 + functionName: SetMask + data: + objectReferenceParameter: {fileID: 0} + floatParameter: 0 + intParameter: 4 + messageOptions: 0 diff --git a/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/Beyond2.anim.meta b/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/Beyond2.anim.meta new file mode 100644 index 000000000..5032486f5 --- /dev/null +++ b/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/Beyond2.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a61f08f28ccb09f4fbe55aa590e923c3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/MediumBot.controller b/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/MediumBot.controller index ed79603bc..98d2f1de2 100644 --- a/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/MediumBot.controller +++ b/Assets/Resources/Sprites/Games/Fillbots/Animations/Medium/MediumBot.controller @@ -78,6 +78,55 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1101 &-4437767289989465719 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 5933483675615906073} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 1 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &-4320946477745934298 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Beyond + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -4437767289989465719} + 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: bc64744eaf5026441954d6d473138e4c, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1107 &-1830254761773337453 AnimatorStateMachine: serializedVersion: 6 @@ -111,6 +160,12 @@ AnimatorStateMachine: - serializedVersion: 1 m_State: {fileID: -4783784964691998181} m_Position: {x: 445, y: 455, z: 0} + - serializedVersion: 1 + m_State: {fileID: -4320946477745934298} + m_Position: {x: 480, y: 520, z: 0} + - serializedVersion: 1 + m_State: {fileID: 5933483675615906073} + m_Position: {x: 720, y: 520, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] @@ -247,6 +302,32 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1102 &5933483675615906073 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Beyond2 + 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: a61f08f28ccb09f4fbe55aa590e923c3, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1102 &8217423450910585099 AnimatorState: serializedVersion: 6 diff --git a/Assets/Scripts/Games/Fillbots/NtrFillbot.cs b/Assets/Scripts/Games/Fillbots/NtrFillbot.cs index 26debd387..2fd49cc52 100644 --- a/Assets/Scripts/Games/Fillbots/NtrFillbot.cs +++ b/Assets/Scripts/Games/Fillbots/NtrFillbot.cs @@ -59,6 +59,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots private Sound fillSound; private bool holding; + private bool isExplode = false; private float lerpDistance; @@ -145,7 +146,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots new MultiSound.Sound("fillbots/" + sizePrefix + "Fall", beat + 2), }); - game.ScheduleInput(startBeat, 4, Fillbots.InputAction_BasicPress, JustHold, HoldOut, HoldOut); + game.ScheduleInput(startBeat, 4, Fillbots.InputAction_BasicPress, JustHold, Empty, Empty); game.currentBots.Add(this); } @@ -181,9 +182,10 @@ namespace HeavenStudio.Games.Scripts_Fillbots if (holding) { float normalizedBeat = cond.GetPositionFromBeat(startBeat + 4, holdLength); - float normalizedExplodeBeat = cond.GetPositionFromBeat(startBeat + 4, holdLength + 2); + float normalizedExplodeBeat = cond.GetPositionFromBeat(startBeat + 4, holdLength + 0.25); + float normalizedULTRAExplodeBeat = cond.GetPositionFromBeat(startBeat + 4, holdLength + 1.5f); - if (beepEvent != null && beepEvent.enabled && ReportBeat(ref beepEvent.lastReportedBeat)) + if (!isExplode && beepEvent != null && beepEvent.enabled && ReportBeat(ref beepEvent.lastReportedBeat)) { if (beepEvent.lastReportedBeat < beepEvent.startBeat + beepEvent.length) { @@ -194,11 +196,18 @@ namespace HeavenStudio.Games.Scripts_Fillbots } fillAnim.DoNormalizedAnimation("Fill", Mathf.Clamp(normalizedBeat, 0, 1)); - if (!game.IsExpectingInputNow(Fillbots.InputAction_BasicRelease) && normalizedExplodeBeat >= 1f) + if (!isExplode && !game.IsExpectingInputNow(Fillbots.InputAction_BasicRelease) && normalizedExplodeBeat >= 1f) { - SoundByte.PlayOneShotGame("fillbots/explosion"); - game.currentBots.Remove(this); - Destroy(gameObject); + isExplode = true; + fullBody.Play("Beyond", 0, 0); + BeatAction.New(game, new List() + { + new BeatAction.Action(startBeat + holdLength + 5.5, delegate { + SoundByte.PlayOneShotGame("fillbots/explosion"); + game.currentBots.Remove(this); + Destroy(gameObject); + }), + }); } else if (PlayerInput.GetIsAction(Fillbots.InputAction_BasicRelease) && !game.IsExpectingInputNow(Fillbots.InputAction_BasicRelease)) { @@ -212,9 +221,9 @@ namespace HeavenStudio.Games.Scripts_Fillbots SoundByte.PlayOneShotGame("fillbots/miss"); if (game.conveyerStartBeat == -1) game.conveyerStartBeat = cond.songPositionInBeats + 1; } - else if (normalizedBeat >= 1) + else if (!isExplode) { - fullBody.Play("Dead", 0, 0); + fullBody.DoScaledAnimationAsync("ReleaseLate", 0.5f); fillSound.KillLoop(0); beepEvent.enabled = false; holding = false; @@ -222,6 +231,14 @@ namespace HeavenStudio.Games.Scripts_Fillbots SoundByte.PlayOneShotGame("fillbots/miss"); if (game.conveyerStartBeat == -1) game.conveyerStartBeat = cond.songPositionInBeats + 1; } + else + { + fillSound.KillLoop(0); + beepEvent.enabled = false; + holding = false; + normalizedFill = normalizedBeat; + if (game.conveyerStartBeat == -1) game.conveyerStartBeat = cond.songPositionInBeats + 1; + } releaseEvent.Disable(); } } @@ -248,7 +265,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots fullBody.DoScaledAnimationAsync("Hold", 1f); SoundByte.PlayOneShotGame("fillbots/beep"); fillSound = SoundByte.PlayOneShotGame("fillbots/water", -1, 1 / (float)(holdLength / 3), 1, true); - releaseEvent = game.ScheduleInput(startBeat + 4, holdLength, Fillbots.InputAction_BasicRelease, JustRelease, OutRelease, OutRelease); + releaseEvent = game.ScheduleInput(startBeat + 4, holdLength, Fillbots.InputAction_BasicRelease, JustRelease, Empty, Empty); beepEvent = new GameEvent() { startBeat = startBeat + 4, @@ -258,11 +275,6 @@ namespace HeavenStudio.Games.Scripts_Fillbots }; } - private void HoldOut(PlayerActionEvent caller) - { - - } - private void JustRelease(PlayerActionEvent caller, float state) { fillSound.KillLoop(0); @@ -273,7 +285,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots { SoundByte.PlayOneShotGame("fillbots/miss"); game.filler.DoScaledAnimationAsync("ReleaseWhiff", 0.5f); - SoundByte.PlayOneShotGame("fillbots/armRetractionWhiff"); + SoundByte.PlayOneShotGame("fillbots/armRetraction"); fullBody.DoScaledAnimationAsync("ReleaseLate", 0.5f); return; } @@ -281,7 +293,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots { SoundByte.PlayOneShotGame("fillbots/miss"); game.filler.DoScaledAnimationAsync("ReleaseWhiff", 0.5f); - SoundByte.PlayOneShotGame("fillbots/armRetractionWhiff"); + SoundByte.PlayOneShotGame("fillbots/armRetraction"); fullBody.DoScaledAnimationAsync("ReleaseEarly", 0.5f); return; } @@ -303,10 +315,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots }); } - private void OutRelease(PlayerActionEvent caller) - { - - } + private void Empty(PlayerActionEvent caller) { } public bool ReportBeat(ref double lastReportedBeat) {