59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using DG.Tweening;
|
|
using UnityEngine;
|
|
using Weapons.Scripts;
|
|
|
|
public class LoseLife : MonoBehaviour
|
|
{
|
|
[SerializeField] private Renderer[] healthMarkers;
|
|
[SerializeField] private Renderer polygon;
|
|
[SerializeField] private WeaponHandler weapon;
|
|
private Color[] _markerColors;
|
|
|
|
private EntityHealth _health;
|
|
private Color _polygonColor;
|
|
private Color _polygonColorClear;
|
|
|
|
private void Awake()
|
|
{
|
|
_health = GetComponent<EntityHealth>();
|
|
_polygonColor = polygon.material.color;
|
|
_polygonColorClear = _polygonColor;
|
|
_polygonColorClear.a = 0;
|
|
|
|
_markerColors = new Color[healthMarkers.Length];
|
|
for (int i = 0; i < healthMarkers.Length; i++)
|
|
{
|
|
_markerColors[i] = healthMarkers[i].material.color;
|
|
_markerColors[i].a = 0;
|
|
}
|
|
}
|
|
|
|
public void LifeLost(int livesLeft)
|
|
{
|
|
healthMarkers[livesLeft].transform.DOScale(Vector3.one * 5f, 1f).SetEase(Ease.InQuint).SetUpdate(true);
|
|
healthMarkers[livesLeft].material.DOColor(_markerColors[livesLeft], 1f).SetDelay(0.25f).SetUpdate(true);
|
|
_health.enabled = false;
|
|
weapon.enabled = false;
|
|
var timeVal = Time.timeScale;
|
|
Time.timeScale = 0;
|
|
WaitUtils.Wait(0.1f, false, () => Time.timeScale = timeVal);
|
|
|
|
var sequence = DOTween.Sequence();
|
|
for (int i = 0; i < 5; i++)
|
|
{
|
|
sequence.Append(polygon.material.DOColor(_polygonColorClear, 0.2f).SetUpdate(true));
|
|
sequence.Append(polygon.material.DOColor(_polygonColor, 0.2f).SetUpdate(true));
|
|
}
|
|
|
|
sequence.Play().OnComplete(() =>
|
|
{
|
|
weapon.enabled = true;
|
|
_health.enabled = true;
|
|
});
|
|
}
|
|
}
|
|
|