public void PlayHitEffect(float stopBeat) { if (particles == null) { return; } particles.Play(); particleStopTime = BeatTime.timeOnBeat(stopBeat); }
public void PlaySynchronized(int trackNum, float beginBeat, float endBeat = float.PositiveInfinity) { if (trackNum < 0 || trackNum >= playableTracks.Length) { return; } double beginTime = BeatTime.timeOnBeat(beginBeat); double endTime = float.IsInfinity(endBeat) ? float.PositiveInfinity : BeatTime.timeOnBeat(endBeat); double length = endTime - beginTime; AudioSource track = playableTracks[trackNum]; track.volume = volumePlaySynchronized; double bgmTime = BeatTime.audioTime; if (beginTime > bgmTime) { track.SetScheduledEndTime(0); double beginDspTime = BeatTime.dspTime + (beginTime - bgmTime); if (isSynchronized && track.isPlaying) { track.SetScheduledEndTime(beginDspTime + length); } else { track.time = (float)beginTime; track.PlayScheduled(beginDspTime); track.SetScheduledEndTime(beginDspTime + length); } } else { track.SetScheduledEndTime(0); if (!track.isPlaying) { track.Play(); } if (!isSynchronized) { track.time = (float)BeatTime.audioTime; } track.SetScheduledEndTime(BeatTime.dspTime + length); } isSynchronized = true; }
// Update is called once per frame void Update() { float deltaTime = Time.deltaTime; for (int i = 0; i < maxRippleCount; ++i) { ripplePositions[i] += deltaTime * rippleSpeed; } int currBeat = BeatTime.numBeat; if (currBeat >= 0 && currBeat != lastBeat) { if (currBeat == lastBeat + 1 && currBeat % beatPerRipple == 0) { AddRipple((float)(BeatTime.audioTime - BeatTime.timeOnBeat(currBeat))); } lastBeat = currBeat; } material.SetFloatArray("_RipplePositions", ripplePositions); }
public void PlayNow(int trackNum, float beginBeat, float endBeat) { if (trackNum < 0 || trackNum >= playableTracks.Length) { return; } double beginTime = BeatTime.timeOnBeat(beginBeat); double endTime = BeatTime.timeOnBeat(endBeat); double length = endTime - beginTime; AudioSource track = playableTracks[trackNum]; track.volume = volumePlayNow; track.SetScheduledEndTime(0); track.time = (float)beginTime; track.Play(); track.SetScheduledEndTime(BeatTime.dspTime + length); isSynchronized = false; }