Unity3D. Как получить результат transform.rotate без фактического изменения игрового объекта transform
В Unity3d я ввожу положение преобразования, вращения и масштаба в Matrix4x4, чтобы нарисовать некоторые штуковины. Я бы хотел, чтобы кватернион вращения, введенный в матрицу, вращался на определенное количество эйлеровых углов (угол). Это моя попытка, я делаю копию преобразования (temp), вызываю rotate() для него и затем передаю его вращение кватерниона в матрицу.
Transform temp = transform;
temp.Rotate(new Vector3(0f,0f,Angle));
Matrix4x4 rotationMatrix = Matrix4x4.TRS(transform.position,temp.rotation,transform.lossyScale);
К сожалению, когда я делаю это, он фактически вращает исходное преобразование, а не просто его временную копию, как я планировал. Как я могу добавить определенную величину угла поворота Эйлера к кватерниону?
1 ответ
Решение
Я думаю, что я ответил на этот вопрос, но на самом деле это не решает мою проблему...
Matrix4x4 rotationMatrix = Matrix4x4.TRS(transform.position,transform.rotation*Quaternion.AngleAxis(Angle,Vector3.forward),transform.lossyScale);