public void Update() { if (started) { if (progress < 1f) { progress += Time.deltaTime / duration; if (separateAxes) { float x = chosenDir.x * strengthHoriz * curveHoriz.Evaluate(progress); float y = chosenDir.y * strengthVerti * curveVerti.Evaluate(progress); float z = chosenDir.z * strengthHoriz * curveHoriz.Evaluate(progress); vector = new Vector3(x, y, z); } else { vector = chosenDir * strength * curve.Evaluate(progress); } } else { action?.Invoke(); started = false; propeller?.RemovePropulsion(this); } } }