2014-01-17 4 views
3

Я изучаю, как использовать единство, и просто задал быстрый вопрос о наилучшей практике при изменении определенных аспектов вращения. Если бы я только хотел настроить x и z аспекты нового вращения, что было бы лучшим способом сделать это.Правильный способ настройки аспектов вращения

я придумал либо:

newRotation.x = 0F; 
newRotation.z = 0F; 

Или:

newRotation = new Quaternion(0f, newRotation.y, 0f, newRotation.w); 

Какой из них будет лучший способ идти о выполнении задачи обнуления х и г, но оставляя остальное тоже самое? Или есть другой способ, который мне не хватает?

Благодаря

+2

Если 'newRotation' является локальной переменной, это, вероятно, не имеет значения; если это поле класса, я бы пошел с тем, что выделяет меньше кучи (см. [этот поток SO о распределении структуры] (http://stackoverflow.com/questions/203695/does-using-new-on-a-strict- allocate-it-on-the-heap-or-stack) для справки). Как в стороне, вы совершенно уверены, что знаете, что это делает? Если вы не знаете, что представляют внутренние ценности кватерниона, вы почти наверняка захотите работать с [углы Эйлера] (http://docs.unity3d.com/Documentation/ScriptReference/Quaternion-eulerAngles.html). – rutter

ответ

0

Изменяя х, у, г я предполагаю, что вы пытаетесь изменить ось вращения.

Важно помнить, что эти значения представляют координаты оси вращения, умноженные на грех, равный половине угла поворота. Если вы не будете осторожны при настройке, вы можете установить другое вращение.

Безопасный способ изменить поворот - использовать Quaternion (Vector3D, Double), где вы устанавливаете ось вращения и угол в градусах.

Смежные вопросы