Вы можете добавить вращения, умножив два Quaternions
на оператор *
подобно
newRotation *= additionalRotation;
Затем, чтобы сгенерировать additionalRotation
, вы можете использовать Quaternion.Euler
и передайте Vector3
, представляющее вращение, разделенное на составляющие его угла Эйлера для каждой оси.
Я не совсем понял ваш вариант использования, но если вы хотите вращаться, например, только вокруг ось Z вы бы сделали
newRotation *= Quaternion.Euler(Vector3.forward * angle);
Или, если бы вы предпочли взять заданное Quaternion
, но ограничьте его вращением только на определенной оси, такой как Z, вы можете использовать
newRotation = Quaternion.Euler(Vector3.Scale(Vector3.forward, newRotation.euerAngles));
, где вы можете заменить Vector3.forward
на любой другой вектор, указывающий, какие углы оси следует использовать, например, new Vector3(1,0,1)
для сохранения вращения X и Z, но исключить вращение Y (см. Vector3.Scale
)