revival/game/Assets/Scripts/Character/Jetpack.cs

84 lines
2.1 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using DG.Tweening;
using TMPro;
using UnityEditor.UIElements;
using UnityEngine;
public class Jetpack : MonoBehaviour
{
[Serializable]
private struct Settings
{
public Material trailMat;
public int trimIdx;
public float pulseTime;
public float emissionScale;
public float lightIntensity;
public AnimationCurve trailTimeCurve;
}
[SerializeField] private Settings _settings;
[SerializeField] private TrailRenderer[] _trails;
private float[] _baseTrailTimes;
[SerializeField] private Light _light;
private const string EMISSION_COLOR = "_EmissionColor";
private void Start()
{
_baseTrailTimes = new float[_trails.Length];
for (int i = 0; i < _trails.Length; i++)
{
_baseTrailTimes[i] = _trails[i].time;
_trails[i].time = 0;
}
DisableTrails();
_light.intensity = 0;
}
private void DisableTrails() => SetTrails(false);
private void EnableTrails() => SetTrails(true);
private void SetTrails(bool state)
{
for (int i = 0; i < _trails.Length; i++)
{
_trails[i].Clear();
_trails[i].enabled = state;
}
}
public void Pulse()
{
EnableTrails();
for (int i = 0; i < _trails.Length; i++)
{
_trails[i].time = _baseTrailTimes[i];
_trails[i]
.DOTime(0, _settings.pulseTime);
// .SetEase(_settings.trailTimeCurve);
}
var t = 0f;
DOTween.To(
() => t,
x => { },
1.0f,
_settings.pulseTime)
.OnComplete(DisableTrails);
_light.intensity = _settings.lightIntensity;
_light.DOIntensity(0, _settings.pulseTime);
// var baseEmission = _settings.trailMat.GetColor(EMISSION_COLOR);
// var pulseEmission = baseEmission * _settings.emissionScale;
}
}