lucid-super-dream/Assets/Scripts/MoveAfterDelay.cs

42 lines
1.2 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using UnityEngine;
using Random = UnityEngine.Random;
public class MoveAfterDelay : MonoBehaviour
{
[SerializeField] private int beatsBeforeMove = 16;
[SerializeField] private float scaleAmount = 1.5f;
[SerializeField] private int numBeatsAfterScale = 4;
private static AudioBeatManager _audio;
private void Awake()
{
if (_audio == null)
_audio = FindObjectOfType<AudioBeatManager>();
}
private void OnEnable()
{
_audio.OnBeatEvent += AudioOnBeat;
}
private void OnDisable()
{
_audio.OnBeatEvent -= AudioOnBeat;
}
private void AudioOnBeat(int beat)
{
if (beat % beatsBeforeMove != 0) return;
DOTween.Sequence()
.Append(transform.DOScale(Vector3.one * scaleAmount, _audio.TimeBetweenBeats*16).SetEase(Ease.InQuint))
.Append(transform.DOScale(Vector3.one, _audio.TimeBetweenBeats*16).SetEase(Ease.OutQuint))
.Append(transform.DOMoveZ(-30, 1.0f).SetEase(Ease.InOutQuint).SetDelay(_audio.TimeBetweenBeats * numBeatsAfterScale))
.Play();
}
}