using System.Collections; using System.Collections.Generic; using UnityEngine; public class ComboPomegaranteBehavior : MonoBehaviour { private GamingManager _manager; // Animation related variables private const float BuldgePeakTime = 0.2f; private const float BuldgePeakScale = 4f; private const float BuldgeFinishTime = 0.3f; private const float BuldgeFinishScale = 3f; private float TimeSinceBuldge = 0f; private const float HitPeakTime = 0.1f; private const float HitFinishTime = 0.15f; private const float HitPeakScale = 4f; private float TimeSinceHit = 0f; private bool PlayingBuldgeAnim = false; private bool PlayingHitAnim = false; private bool bPlayBuldgeAnim = false; private bool bPlayHitAnim = false; private int HitCount = 0; private AudioSource hitAudio; public void Init(GamingManager manager) { _manager = manager; } void Start() { hitAudio = gameObject.AddComponent(); } // Update is called once per frame void Update() { if (_manager.IsGameStarted() && !_manager.IsGamePaused()) { if (bPlayBuldgeAnim) { bPlayBuldgeAnim = false; PlayingBuldgeAnim = true; } if (PlayingBuldgeAnim) { TimeSinceBuldge += Time.deltaTime; if (TimeSinceBuldge > BuldgeFinishTime) { PlayingBuldgeAnim = false; gameObject.transform.localScale = new Vector3(BuldgeFinishScale, BuldgeFinishScale, BuldgeFinishScale); TimeSinceBuldge = 0f; } else if (TimeSinceBuldge < BuldgePeakTime) { float scale = Mathf.Lerp(1f, BuldgePeakScale, (TimeSinceBuldge / BuldgePeakTime)); gameObject.transform.localScale = new Vector3(scale, scale, scale); } else // TimeSinceBuldge > BuldgePeakTime && TimeSinceBuldge < BuldgeFinishTime { float scale = Mathf.Lerp(BuldgePeakScale, BuldgeFinishScale, (TimeSinceBuldge - BuldgePeakTime) / (BuldgeFinishTime - BuldgePeakTime)); gameObject.transform.localScale = new Vector3(scale, scale, scale); } return; } if (bPlayHitAnim) { bPlayHitAnim= false; PlayingHitAnim = true; } if (PlayingHitAnim) { TimeSinceHit += Time.deltaTime; if (TimeSinceHit > HitFinishTime) { PlayingHitAnim = false; gameObject.transform.localScale = new Vector3(BuldgeFinishScale, BuldgeFinishScale, BuldgeFinishScale); TimeSinceHit = 0f; } else if (TimeSinceHit < HitPeakTime) { float scale = Mathf.Lerp(BuldgeFinishScale, HitPeakScale, (TimeSinceHit / HitPeakTime)); gameObject.transform.localScale = new Vector3(scale, scale, scale); } else // TimeSinceHit > HitPeakTime && TimeSinceHit < HitFinishTime { float scale = Mathf.Lerp(HitPeakScale, BuldgeFinishScale, (TimeSinceHit - HitPeakTime) / (HitFinishTime - HitPeakTime)); gameObject.transform.localScale = new Vector3(scale, scale, scale); } return; } } } public void Hit() { if (HitCount == 0) { bPlayBuldgeAnim = true; } else { bPlayHitAnim= true; } HitCount++; hitAudio.clip = _manager.GetAudioManager().GetRandomSound(SoundCategory.FruitSmash); if (UserSettings.ins.openEffect) hitAudio.Play(); } public int GetHitCount() { return HitCount; } }