From 12cfb6c527987256911b0e7bf2c79298412f9b2a Mon Sep 17 00:00:00 2001 From: fu-majime Date: Tue, 26 Mar 2024 13:04:16 +0900 Subject: [PATCH] Change animation playback timing --- Assets/Resources/Sfx/games/bonOdori/clap2.wav | Bin 0 -> 33496 bytes .../Sfx/games/bonOdori/clap2.wav.meta | 22 ++ Assets/Scripts/Games/BonOdori/BonOdori.cs | 227 +++++++++--------- 3 files changed, 142 insertions(+), 107 deletions(-) create mode 100644 Assets/Resources/Sfx/games/bonOdori/clap2.wav create mode 100644 Assets/Resources/Sfx/games/bonOdori/clap2.wav.meta diff --git a/Assets/Resources/Sfx/games/bonOdori/clap2.wav b/Assets/Resources/Sfx/games/bonOdori/clap2.wav new file mode 100644 index 0000000000000000000000000000000000000000..835370be48704d0600fb89371334e115c7f3721d GIT binary patch literal 33496 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 literal 0 HcmV?d00001 diff --git a/Assets/Resources/Sfx/games/bonOdori/clap2.wav.meta b/Assets/Resources/Sfx/games/bonOdori/clap2.wav.meta new file mode 100644 index 000000000..24a54d509 --- /dev/null +++ b/Assets/Resources/Sfx/games/bonOdori/clap2.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 9f89ba33b52e16a49900d64c8c7f339c +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Games/BonOdori/BonOdori.cs b/Assets/Scripts/Games/BonOdori/BonOdori.cs index f439d22bf..ccb5ddf71 100644 --- a/Assets/Scripts/Games/BonOdori/BonOdori.cs +++ b/Assets/Scripts/Games/BonOdori/BonOdori.cs @@ -61,7 +61,7 @@ namespace HeavenStudio.Games.Loaders function = delegate { var e = eventCaller.currentEntity; string variation = "variation" + (new string[] { "Don", "Do", "Do_n" })[e["type"]]; - BonOdori.instance.Sound(e.beat, e[variation], e["type"], e["semitone"]); + BonOdori.instance.PlayDon(e.beat, e[variation], e["type"], e["semitone"]); }, defaultLength = 1f, parameters = new List() @@ -166,13 +166,13 @@ namespace HeavenStudio.Games { string prefix; double beatUniversal; + bool noBopPlayer = false; + bool noBopDonpans = false; + List noBopBeatsPlayer = new (); + List noBopBeatsDonpans = new (); string suffix; SpriteRenderer darkPlane; - bool goBopDonpans; - bool goBopJudge; - bool bopDonpans; - int clapTypeGlobal = 0; - string clapTypeString = "ClapSide"; + string clapTypeString = "ClapFront"; string[] originalTexts = new string[5]; Coroutine[] Scrolls = new Coroutine[5]; Coroutine DarkerBG; @@ -254,10 +254,10 @@ namespace HeavenStudio.Games public void Awake() { - darkPlane = DarkPlane.GetComponent(); - - clapTypeGlobal = 0; instance = this; + SetupBopRegion("bonOdori", "bop", "auto"); + + darkPlane = DarkPlane.GetComponent(); } public void OnStop() @@ -265,6 +265,13 @@ namespace HeavenStudio.Games DarkPlane.GetComponent().color = new Color(1f, 1f, 1f, 0f); } + public override void OnLateBeatPulse(double beat) + { + if (BeatIsInBopRegion(beat)) Bop(beat); + noBopBeatsPlayer.RemoveAll(x => x+4 < beat); + noBopBeatsDonpans.RemoveAll(x => x+4 < beat); + } + public void Update() { var cond = Conductor.instance; @@ -286,27 +293,23 @@ namespace HeavenStudio.Games { ScoreMiss(); SoundByte.PlayOneShotGame("bonOdori/clap"); - if (clapTypeGlobal == 0) - { - clapTypeString = "ClapSide"; - } - else - { - clapTypeString = "ClapFront"; - } Donpans[0].DoScaledAnimationAsync(clapTypeString, 0.5f); - if (!goBopDonpans) + + if (clapTypeString is "ClapFront") { + var currentBeat = Conductor.instance.songPositionInBeatsAsDouble; + noBopBeatsPlayer.Add(currentBeat); BeatAction.New(instance, new List() { - new BeatAction.Action(beatUniversal + 1d, delegate { - foreach (var chara in Donpans) { - chara.DoScaledAnimationAsync("NeutralClapped", 0.5f); - } + new BeatAction.Action(currentBeat, delegate { + noBopPlayer = true; }), - }); - } + new BeatAction.Action(currentBeat + 2d, delegate { + if (noBopBeatsPlayer[^1] == currentBeat) noBopPlayer = false; + }) + }); + } } } @@ -342,14 +345,6 @@ namespace HeavenStudio.Games public void Clap(double beat, int variation, int typeSpeak, bool muted, int clapType, int semitone) { - if (clapType == 1) - { - clapTypeGlobal = 1; - } - else - { - clapTypeGlobal = 0; - } if (!muted) { string clip = typeSpeak switch @@ -359,14 +354,36 @@ namespace HeavenStudio.Games 2 or _ => "pa_n", }; var pitch = SoundByte.GetPitchFromSemiTones(semitone, true); - SoundByte.PlayOneShotGame($"bonOdori/" + clip + (variation + 1), beat, pitch); - - beatUniversal = beat; + SoundByte.PlayOneShotGame($"bonOdori/" + clip + (variation + 1), beat, pitch); } + SoundByte.PlayOneShotGame("bonOdori/clap2", beat, volume: 0.5f); + + beatUniversal = beat; + noBopBeatsDonpans.Add(beatUniversal); + BeatAction.New(instance, new List() + { + new BeatAction.Action(beat - 0.1d, delegate { + clapTypeString = clapType switch { + 0 => "ClapSide", + 1 or _ => "ClapFront", + }; + }), + new BeatAction.Action(beat, delegate { + foreach (var chara in Donpans[1..Donpans.Length]) { + chara.DoScaledAnimationAsync(clapTypeString, 0.5f); + } + }), + new BeatAction.Action(beat + 0.05d, delegate { + if (clapTypeString is "ClapFront") noBopDonpans = true; + }), + new BeatAction.Action(beat + 1.01d, delegate { + if (clapTypeString is "ClapFront") noBopDonpans = false; + }), + }); ScheduleInput(beat, 0f, InputAction_BasicPress, Success, Miss, Empty); } - public void Sound(double beat, int variation, int typeSpeak, int semitone) + public void PlayDon(double beat, int variation, int typeSpeak, int semitone) { string clip = typeSpeak switch { @@ -378,52 +395,47 @@ namespace HeavenStudio.Games var pitch = SoundByte.GetPitchFromSemiTones(semitone, true); SoundByte.PlayOneShotGame($"bonOdori/" + clip + (variation + 1), beat, pitch); + var firstPan = EventCaller.GetAllInGameManagerList("bonOdori", new string[] { "pan" }).Find(x => x.beat >= beat); + if (firstPan is not null) + { + clapTypeString = firstPan["clapType"] switch { + 0 => "ClapSide", + 1 or _ => "ClapFront", + }; + } } public void Success(PlayerActionEvent caller, float state) { - if (clapTypeGlobal == 0) + Donpans[0].DoScaledAnimationAsync(clapTypeString, 0.5f); + if (state <= -1f || state >= 1f) { - clapTypeString = "ClapSide"; + SoundByte.PlayOneShot("nearMiss"); + return; } - else - { - clapTypeString = "ClapFront"; - } - foreach (var chara in Donpans) { - chara.DoScaledAnimationAsync(clapTypeString, 0.5f); - } - - if (!goBopDonpans) + SoundByte.PlayOneShotGame("bonOdori/clap"); + + var currentBeat = Conductor.instance.songPositionInBeatsAsDouble; + double closest = noBopBeatsDonpans.Aggregate((x, y) => Math.Abs(x - currentBeat) < Math.Abs(y - currentBeat) ? x : y); + noBopBeatsPlayer.Add(closest); + if (clapTypeString is "ClapFront") { BeatAction.New(instance, new List() { - new BeatAction.Action(beatUniversal + 1d, delegate { - foreach (var chara in Donpans) { - chara.DoScaledAnimationAsync("NeutralClapped", 0.5f); - } + new BeatAction.Action(closest + 0.05d, delegate { + noBopPlayer = true; }), - }); + new BeatAction.Action(closest + 1.01d, delegate { + if (noBopBeatsPlayer[^1] == closest) noBopPlayer = false; + }) + }); } - SoundByte.PlayOneShotGame("bonOdori/clap"); } public void Miss(PlayerActionEvent caller) { - if (clapTypeGlobal == 0) - { - clapTypeString = "ClapSide"; - } - else - { - clapTypeString = "ClapFront"; - } - foreach (var chara in Donpans) { - chara.DoScaledAnimationAsync(clapTypeString, 0.5f); - } - - SoundByte.PlayOneShot("miss"); + // SoundByte.PlayOneShot("miss"); BeatAction.New(instance, new List() { new BeatAction.Action(beatUniversal + 1d, delegate { JudgeFace.Play("Sad");}), @@ -583,54 +595,69 @@ namespace HeavenStudio.Games public void ToggleBop(double beat, float length, bool bopOrNah, bool autoBop) { - goBopDonpans = autoBop; goBopJudge = autoBop; if (autoBop) return; if (bopOrNah) { for (int i = 0; i < length; i++) { - BeatAction.New(instance, new List() + double bopBeat = beat + i; + BeatAction.New(instance, new() {new BeatAction.Action(bopBeat, delegate { Bop(bopBeat);})}); + } + BeatAction.New(instance, new List() + { + new BeatAction.Action(beat + length, delegate { - new BeatAction.Action(beat + i, delegate - { - foreach (var chara in Donpans) { - chara.DoScaledAnimationAsync("Bop", 0.5f); - } - Judge.DoScaledAnimationAsync("Bop", 0.5f); - - }), - new BeatAction.Action(beat + length, delegate - { + if (!noBopBeatsDonpans.Any(x => Math.Abs(x - (beat + length)) <= double.Epsilon)) { foreach (var chara in Donpans) { chara.Play("NeutralBopped"); } - }) - }); + } + }) + }); + } + } + + private void Bop(double beat) + { + if (!noBopPlayer & !noBopBeatsPlayer.Any(x => Math.Abs(x - beat) <= double.Epsilon)) + { + if (!Donpans[0].IsPlayingAnimationNames("ClapSide", "ClapFront")) { + Donpans[0].DoScaledAnimationAsync("Bop", 0.5f); } } + if (!noBopDonpans & !noBopBeatsDonpans.Any(x => Math.Abs(x - beat) <= double.Epsilon)) + { + foreach (var chara in Donpans[1..Donpans.Length]) { + if (!chara.IsPlayingAnimationNames("ClapSide", "ClapFront")) { + chara.DoScaledAnimationAsync("Bop", 0.5f); + } + } + } + Judge.DoScaledAnimationAsync("Bop", 0.5f); } public void Bow(double beat, float length) { - if (goBopDonpans == true) - { - bopDonpans = true; - } - else - { - bopDonpans = false; - - } - goBopDonpans = false; + noBopPlayer = true; + noBopDonpans = true; foreach (var chara in Donpans) { chara.Play("Bow"); } BeatAction.New(instance, new List() { new BeatAction.Action(beat + length, delegate { - foreach (var chara in Donpans) { - chara.Play("NeutralBopped"); - } + noBopPlayer = false; + noBopDonpans = false; + if (!noBopBeatsPlayer.Any(x => Math.Abs(x - (beat + length)) <= double.Epsilon)) { + Donpans[0].Play("NeutralBopped"); + if (BeatIsInBopRegion(beat + length)) Bop(beat + length); + } + if (!noBopBeatsDonpans.Any(x => Math.Abs(x - (beat + length)) <= double.Epsilon)) { + foreach (var chara in Donpans[1..Donpans.Length]) { + chara.Play("NeutralBopped"); + } + if (BeatIsInBopRegion(beat + length)) Bop(beat + length); + } }) }); } @@ -639,20 +666,6 @@ namespace HeavenStudio.Games // { // } - - public override void OnBeatPulse(double beat) - { - if (goBopDonpans) - { - foreach (var chara in Donpans) { - chara.DoScaledAnimationAsync("Bop", 0.5f); - } - } - if (goBopJudge) - { - Judge.DoScaledAnimationAsync("Bop", 0.5f); - } - } public void DarkBG(double beat, bool toggle, float length) {