using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class DistanceCheck : MonoBehaviour
{
float lerpDuration = 3;
public GameObject descriptionTextImage;
public TextMeshProUGUI text;
private Animator anim;
private bool slowDownOnExit = false;
private float timeElapsed = 0;
private float startValue = 1;
private float endValue = 0;
private float valueToLerp = 0;
private bool resetV = false;
// Start is called before the first frame update
void Start()
{
anim = transform.GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
if (slowDownOnExit)
{
if (timeElapsed < lerpDuration)
{
valueToLerp = Mathf.Lerp(startValue, endValue, timeElapsed / lerpDuration);
anim.SetFloat("Forward", valueToLerp);
timeElapsed += Time.deltaTime;
}
anim.SetFloat("Forward", valueToLerp);
descriptionTextImage.SetActive(true);
text.text = "I can't move that far by foot. I need to find some transportation to move any further.";
if(valueToLerp == 0 && resetV == false)
{
timeElapsed = 0;
startValue = 0;
endValue = 1;
resetV = true;
}
if(valueToLerp == 1 && resetV)
{
timeElapsed = 0;
startValue = 1;
endValue = 0;
resetV = false;
}
}
else
{
text.text = "";
descriptionTextImage.SetActive(false);
}
}
private void OnTriggerExit(Collider other)
{
if (other.name == "CrashLandedShipUpDown")
{
slowDownOnExit = true;
}
}
}
I want to make that when the valueToLerp is 0 or when the lerp finished first time increase the valueToLerp back to 1 with the same lerp then when reaching to 1 start the lerp again back to 0 and so on nontsop like a “PingPong” but without using pingpong. I tried to use the resetV flag helper but the valueToLerp get to 0 and never continue back up to 1 again.