Контекст
Я работаю со Смешанной реальностью и Единством и пытаюсь контролировать вращение 3D-объекта GameObject своими руками.
Вот что у меня естьдо сих пор:
Vector3 _lefthand = new Vector3(Left.x, Left.y, Left.z);
Vector3 _righthand = new Vector3(Right.x, Right.y, Right.z);
_myObject.transform.rotation = Quaternion.FromToRotation(Vector3.right, _righthand - _lefthand));
Этот блок содержится в сопрограмме IEnumerator
, которая начинается, когда встречается оператор if
в Update
. if
проверяет конкретную позу руки, поэтому вращение «начинается», когда руки активны, и «останавливается», когда их нет.
То, что у меня хорошо работает для одного небольшого вращения,но падает, если я хочу несколько раз повернуть объект, потому что вращение _myObject
просто соответствует текущему кватерниону, созданному нынешними Vector3
положениями моих рук.
Вопрос
Как я мог повернуть _myObject
от его текущего вращения до нового вращения, с точностью до разницы между моими начальными и конечными позициями?