Estoy tratando de ejecutar un DoTween y funciona bien, pero cuando quiero detenerlo, no se detiene en absoluto, sigue funcionando hasta que finaliza. Estoy usando DoTween Sequence para matarlo, pero de alguna manera no funciona. ¿Cual es el problema?
public float prevValue = 0; Sequence mySequence = DOTween.Sequence (); private void Update () { UpdateSlider (); if (Input.GetKeyDown (KeyCode.T)) { LerpToThis (90); } else if (Input.GetKeyDown (KeyCode.Z)) { KillSequence (); } } public void LerpToValue (float newValue) { float myValue = prevValue; DOTween.To (() => myValue , x => prevValue = x, newValue, 3.0f); } public void KillSequence () { mySequence.Kill (); }Aparte del hecho de que su código usa variables no declaradas (como ShouldLerp_ ) y al presionar 'T' llama a un método diferente al que se muestra en su extracto, asumiré que su llamada LerpToThis también interpolaciones usando DOTween.To , pero cuando intente para detener la interpolación, llame a mySequence.Kill() aunque esa secuencia no es lo que está interpolando. Por eso la interpolación no se detiene.
Llame Kill() en el resultado de la llamada DOTween.To() , o asigne a esa interpolación un Id y llame a DOTween.Kill(id) en su lugar.
frankhermes lo ha dicho todo, solo estoy elaborando un poco la solución:
Dentro del método LerpToValue , crea una interpolación con la línea
DOTween.To(() => myValue , x => prevValue = x, newValue, DurationFading); El método DOTween.To devuelve un objeto de tipo Tween en el que puede llamar a Kill , es decir, primero agrega una declaración a su clase
private Tween myTween; Luego almacena la interpolación cuando la crea en LerpToValue
myTween = DOTween.To (() => myValue , x => prevValue = x, newValue, DurationFading); Y finalmente, en KillSequence (que querrá cambiar el nombre, ya que, como mencionó Frank, no se usa ninguna secuencia) llama
myTween.Kill(); Puede deshacerse de DOTween.Sequence () por completo.