В процессе появился еще один вопрос, т.к. он касается предыдущего то задаю его здесь. Задача: требуется в цикле, через определенный промежуток времени поворачивать определенный объект, в данном случае кубик, на определенный угол, в течении заданного времени. Частично я задачу решил, решение приводилось выше. В коде Mathf.LerpAngle(0, angleRot, spedPrivate) для получения интерполяции задается начальный угол (0) и конечный (angleRot). В процессе выяснилось, что начальный угол у разных объектов будет разный. Решил получать стартовый угол через startAngle = mObject.localRotation.eulerAngles и в итоге получил вот такой код:
- Код: Выделить всё
var sped = 0.5;
var pauseTime = 2.5;
var startAngle :Vector3;
var angleRot :Vector3;
var mObject : Transform;
private var spedPrivate = 0.0;
private var nextTime = 0.0;
private var endAngle :Vector3;
function Start () {
nextTime = Time.time + pauseTime;
angleRot = Vector3(90, 0, 0);
}
function Update () {
if (Time.time > nextTime) {
nextTime = Time.time + pauseTime;
spedPrivate = 0.0;
startAngle = mObject.localRotation.eulerAngles;
endAngle = startAngle + angleRot;
}
spedPrivate += sped * Time.deltaTime;
mObject.localRotation = Quaternion.Euler(Mathf.LerpAngle(startAngle.x, endAngle.x, spedPrivate), 0, 0);
}
Теперь о проблеме: в первом проходе куб поворачивается на 90, во втором на 180 а затем почему то на 0.
В инспекторе видно, что после первого прохода Rotation = x = 90 y = 0, z = 0, после второго x = -5,008956e-06, y = 180, z = 180, после третьего опять x = 90 y = 0, z = 0 и так бесконечно. Получается, что кубик делает два поворота и возвращается в 0.
Вот собственно хотелось бы, чтобы мне помогли понять, что я делаю не так?