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);
Другие вопросы по тегам