Что заставляет его вращаться после скорости, это
target.transform.rotation = Quaternion.Slerp(target.transform.rotation, qTo, Time.deltaTime * speed);
Slerp - это сферическая интерполяция, которая в основном интерполирует текущее вращение объекта и значение qTo , используя deltaTime (время, прошедшее с последнего кадра в секундах) и произвольная скорость .
например, представьте, что для упрощения вы вращаетесь только по одной оси, скажем, по оси z , если вращение равно 0, а qTo равно 45 на первой итерации, то оно будет:
45 * deltaTime * speed
Но так как оно уже установлено для вращения преобразования, следующая итерация будет использовать новое вращение в качестве начального значения интерполяция:
(45 - previousRotation) * deltaTime * speed + previousRotation
Таким образом, она сходится к 45, когда speed * sum(all deltaTimes)
равен единице.
Так что я предполагаю, что ваша скорость равна 2, поскольку для достижения целевого вращения требуется 0,5 с.
Но код немного ненадежный, поскольку он будет вести себя странно, если значение параметра «Вращение» меньше 1 / скорость.
Это не указано в вопросе, но я полагаю, что вы вызываете его внутри обновления (i sh), чтобы позволить deltaTime иметь разумное значение.
Таким образом, чтобы контролировать продолжительность вашего вращения, вы устанавливаете скорость на желаемое значение, чтобы длительность 0,1 с установила скорость на 10.