mirror of
https://github.com/RHeavenStudio/HeavenStudio.git
synced 2025-06-12 08:37:37 +02:00
Basketball Girls (#858)
* wip * Secretly fixed bugs in unrelated areas * wip2 * wip3 * camera * OK
This commit is contained in:
104
Assets/Scripts/Games/BasketballGirls/Ball.cs
Normal file
104
Assets/Scripts/Games/BasketballGirls/Ball.cs
Normal file
@ -0,0 +1,104 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
using HeavenStudio.Util;
|
||||
|
||||
namespace HeavenStudio.Games.Scripts_BasketballGirls
|
||||
{
|
||||
public class Ball : MonoBehaviour
|
||||
{
|
||||
public double startBeat;
|
||||
[SerializeField] private Animator ballAnim;
|
||||
|
||||
private BasketballGirls game;
|
||||
|
||||
public void Init()
|
||||
{
|
||||
game = BasketballGirls.instance;
|
||||
ballAnim.DoScaledAnimationAsync("prepare", 0.5f);
|
||||
game.ScheduleInput(startBeat, 1, BasketballGirls.InputAction_Catch, JustCatch, MissCatch, Empty);
|
||||
}
|
||||
|
||||
void JustCatch(PlayerActionEvent caller, float state)
|
||||
{
|
||||
game.girlRightNoBopIntervals.Add(new Interval(startBeat + 1, startBeat + 2));
|
||||
|
||||
if (state <= -1f || state >= 1f)
|
||||
{
|
||||
SoundByte.PlayOneShotGame("basketballGirls/catch");
|
||||
MultiSound.Play(
|
||||
new MultiSound.Sound[] {
|
||||
new MultiSound.Sound("basketballGirls/throw", startBeat + 1.5),
|
||||
new MultiSound.Sound("basketballGirls/6", startBeat + 2),
|
||||
}
|
||||
);
|
||||
|
||||
ballAnim.DoScaledAnimationAsync("catch", 0.5f);
|
||||
game.girlLeftAnim.DoScaledAnimationAsync("pass", 0.5f);
|
||||
game.girlRightAnim.DoScaledAnimationAsync("catch", 0.5f);
|
||||
BeatAction.New(this, new List<BeatAction.Action>()
|
||||
{
|
||||
new BeatAction.Action(startBeat + 1.5, delegate {
|
||||
ballAnim.DoScaledAnimationAsync("shootBarely", 0.5f);
|
||||
game.girlRightAnim.DoScaledAnimationAsync("shoot", 0.5f);
|
||||
}),
|
||||
new BeatAction.Action(startBeat + 2, delegate {
|
||||
ballAnim.DoScaledAnimationAsync("barely", 0.5f);
|
||||
game.goalAnim.DoScaledAnimationAsync("barely", 0.5f);
|
||||
}),
|
||||
new BeatAction.Action(startBeat + 3, delegate {
|
||||
Destroy(gameObject);
|
||||
}),
|
||||
});
|
||||
return;
|
||||
}
|
||||
SoundByte.PlayOneShotGame("basketballGirls/catch");
|
||||
MultiSound.Play(
|
||||
new MultiSound.Sound[] {
|
||||
new MultiSound.Sound("basketballGirls/throw", startBeat + 1.5),
|
||||
new MultiSound.Sound("basketballGirls/dunk", startBeat + 2),
|
||||
new MultiSound.Sound("basketballGirls/ok1", startBeat + 2.5),
|
||||
new MultiSound.Sound("basketballGirls/ok2", startBeat + 3),
|
||||
}
|
||||
);
|
||||
|
||||
ballAnim.DoScaledAnimationAsync("catch", 0.5f);
|
||||
if (!game.girlLeftNoBopIntervals.Any(x => x.Start == (startBeat + 1))) game.girlLeftAnim.DoScaledAnimationAsync("pass", 0.5f);
|
||||
game.girlRightAnim.DoScaledAnimationAsync("catch", 0.5f);
|
||||
BeatAction.New(this, new List<BeatAction.Action>()
|
||||
{
|
||||
new BeatAction.Action(startBeat + 1.5, delegate {
|
||||
ballAnim.DoScaledAnimationAsync("shootJust", 0.5f);
|
||||
game.girlRightAnim.DoScaledAnimationAsync("shoot", 0.5f);
|
||||
}),
|
||||
new BeatAction.Action(startBeat + 2, delegate {
|
||||
ballAnim.DoScaledAnimationAsync("just", 0.5f);
|
||||
game.goalAnim.DoScaledAnimationAsync("just", 0.5f);
|
||||
}),
|
||||
new BeatAction.Action(startBeat + 3, delegate {
|
||||
Destroy(gameObject);
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
void MissCatch(PlayerActionEvent caller)
|
||||
{
|
||||
SoundByte.PlayOneShotGame("basketballGirls/" + UnityEngine.Random.Range(1,2).ToString());
|
||||
ballAnim.DoScaledAnimationAsync("hit", 0.5f);
|
||||
game.girlLeftAnim.DoScaledAnimationAsync("shock", 0.5f);
|
||||
game.girlRightAnim.DoScaledAnimationAsync("hit", 0.5f);
|
||||
game.girlRightNoBopIntervals.Add(new Interval(startBeat + 1, startBeat + 2));
|
||||
BeatAction.New(this, new List<BeatAction.Action>()
|
||||
{
|
||||
new BeatAction.Action(startBeat + 3, delegate {
|
||||
Destroy(gameObject);
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
void Empty(PlayerActionEvent caller) { }
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user