Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using UnityEngine;
- using UnityEngine.UI;
- public enum ButtonType
- { Heal, Damage }
- public class LivesValueChanger : MonoBehaviour
- {
- [SerializeField] private ButtonType _buttonType;
- [SerializeField] private Slider _slider;
- [Space]
- [SerializeField] private float _targetDelta;
- [SerializeField] private float _changeSpeed;
- private void OnValidate()
- {
- _targetDelta = Mathf.Abs(_targetDelta);
- _changeSpeed = Mathf.Abs(_changeSpeed);
- }
- private void Start()
- {
- switch (_buttonType)
- {
- default:
- case ButtonType.Heal:
- _changeSpeed = +Mathf.Abs(_changeSpeed);
- break;
- case ButtonType.Damage:
- _changeSpeed = -Mathf.Abs(_changeSpeed);
- break;
- }
- }
- private IEnumerator SmoothChange()
- {
- var tempValue = _slider.value;
- while (Mathf.Abs(_slider.value - tempValue) < _targetDelta)
- {
- _slider.value = Mathf.MoveTowards(_slider.value, _slider.value + _targetDelta, _changeSpeed * Time.deltaTime);
- yield return null;
- }
- }
- public void TryApplyAction()
- {
- if (_slider.value < _slider.minValue)
- _slider.value = _slider.minValue;
- else if (_slider.value > _slider.maxValue)
- _slider.value = _slider.maxValue;
- else
- StartCoroutine(SmoothChange());
- }
- }
Add Comment
Please, Sign In to add comment