W1thr

LivesValueChanger

Jul 7th, 2021 (edited)
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.50 KB | None | 0 0
  1. using System.Collections;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4.  
  5. public enum ButtonType
  6. { Heal, Damage }
  7.  
  8. public class LivesValueChanger : MonoBehaviour
  9. {
  10.     [SerializeField] private ButtonType _buttonType;
  11.     [SerializeField] private Slider _slider;
  12.  
  13.     [Space]
  14.     [SerializeField] private float _targetDelta;
  15.     [SerializeField] private float _changeSpeed;
  16.  
  17.     private void OnValidate()
  18.     {
  19.         _targetDelta = Mathf.Abs(_targetDelta);
  20.         _changeSpeed = Mathf.Abs(_changeSpeed);
  21.     }
  22.  
  23.     private void Start()
  24.     {
  25.  
  26.         switch (_buttonType)
  27.         {
  28.             default:
  29.             case ButtonType.Heal:
  30.                 _changeSpeed = +Mathf.Abs(_changeSpeed);
  31.                 break;
  32.             case ButtonType.Damage:
  33.                 _changeSpeed = -Mathf.Abs(_changeSpeed);
  34.                 break;
  35.         }
  36.  
  37.     }
  38.  
  39.     private IEnumerator SmoothChange()
  40.     {
  41.         var tempValue = _slider.value;
  42.  
  43.         while (Mathf.Abs(_slider.value - tempValue) < _targetDelta)
  44.         {
  45.             _slider.value = Mathf.MoveTowards(_slider.value, _slider.value + _targetDelta, _changeSpeed * Time.deltaTime);
  46.             yield return null;
  47.         }
  48.     }
  49.  
  50.     public void TryApplyAction()
  51.     {
  52.         if (_slider.value < _slider.minValue)
  53.             _slider.value = _slider.minValue;
  54.         else if (_slider.value > _slider.maxValue)
  55.             _slider.value = _slider.maxValue;
  56.         else
  57.             StartCoroutine(SmoothChange());
  58.     }
  59. }
  60.  
Add Comment
Please, Sign In to add comment