Здраствуйте! У меня есть статический класс с методами-расширениями. И там есть метод Move.
Первыйpublic static void Move(this Transform transform, Vector3 target, float time)
{
if (time < 0) Debug.LogError("Time can't be negative");
var start = transform.position;
var deltaTime = 0f;
var thread = _updateThreads.CreateThread();
Observable.EveryUpdate().Subscribe(action =>
{
if (deltaTime >= 1)
{
transform.position = target;
_updateThreads.ClearThread(thread);
}
transform.position = Vector3.Lerp(start, target, deltaTime);
deltaTime += Time.deltaTime / time;
}).AddTo(thread);
}
Тут пока все нормально, но потом мне нужно было еще движение с помощью AnimationCurve и тогда я создал перегрузку.
Второйpublic static void Move(this Transform transform, Vector3 target, float time, AnimationCurve curve)
{
if (time < 0) Debug.LogError("Time can't be negative");
if (curve == null) Debug.LogError("Curve is null");
var start = transform.position;
var deltaTime = 0f;
var thread = _updateThreads.CreateThread();
Observable.EveryUpdate().Subscribe(action =>
{
if (deltaTime >= 1)
{
transform.position = target;
_updateThreads.ClearThread(thread);
}
transform.position = Vector3.Lerp(start, target, curve.Evaluate(deltaTime));
deltaTime += Time.deltaTime / time;
}).AddTo(thread);
}
Если посмотреть, то почти ничего не отличается, только новый параметр, проверка и вместо deltaTime написано curve.Evaluate(delta)
Нужно ли от этого избавлятся и как-то пытатся делать короче?