Страница 1 из 1

Глюк с осями(Помогите выявить глюк)

СообщениеДобавлено: 06 дек 2010, 10:05
Skval
Народ, мне тут старнный косяк в [unity 3D] попался, создайте кубик, поверните его по оси X на 270, а потом попробуйте плюсовать к оси Z с помощью самого простого кода через (c#) или (js). У меня почему то градусы меняются по оси Y, т.е. если я плюсую к Z то увеличивается Y и если к Y то тоже увеличивается Y (P) у меня из-за этого косяка проблемы не малые позже могу и сборку выложить, но тут по сути я хотел бы что бы кто-нибудь сам попробывал собрать, да посмотреть, авось такой стрёмный глюк тока у меня...

Re: Глюк с осями(Помогите выявить глюк)

СообщениеДобавлено: 06 дек 2010, 11:44
Multirezonator
Правильно перемещать по оси Z в глобальных координатах будет например так:

transform.Translate(Vector3.forward*Time.deltaTime, Space.World);

У меня все работает правильно и объекты двигаются именно по Z, приведите пример своего скрипта, конкретно как вы двигаете объект?

Re: Глюк с осями(Помогите выявить глюк)

СообщениеДобавлено: 06 дек 2010, 13:18
Skval
Я говорил не про перемещение, а про вращение, насколько помню градусы используются именно для этого. :ymbringiton:

Re: Глюк с осями(Помогите выявить глюк)

СообщениеДобавлено: 06 дек 2010, 13:50
Zaicheg
Skval писал(а):Я говорил не про перемещение, а про вращение, насколько помню градусы используются именно для этого. :ymbringiton:

Строго говоря, для этого используются кватернионы.
А глюк ваш от того, что Transform.Rotate по умолчанию работает с локальной системой координата. Задайте явно мировую (дополнительный аргумент, в справке есть).

Re: Глюк с осями(Помогите выявить глюк)

СообщениеДобавлено: 06 дек 2010, 13:59
Multirezonator
Multirezonator писал(а):Правильно перемещать по оси Z в глобальных координатах будет например так:

transform.Translate(Vector3.forward*Time.deltaTime, Space.World);

У меня все работает правильно и объекты двигаются именно по Z, приведите пример своего скрипта, конкретно как вы двигаете объект?
Skval писал(а):Я говорил не про перемещение, а про вращение, насколько помню градусы используются именно для этого. :ymbringiton:

Все нормально работает, вместо Translate используем Rotate и учим геометрию.
Zaicheg писал(а):Строго говоря, для этого используются кватернионы.
А глюк ваш от того, что Transform.Rotate по умолчанию работает с локальной системой координата. Задайте явно мировую (дополнительный аргумент, в справке есть).

По одной оси можно и без кватернионов вращать правильно, главное понимать что делаешь..

Re: Глюк с осями(Помогите выявить глюк)

СообщениеДобавлено: 06 дек 2010, 14:13
Zaicheg
Multirezonator писал(а):По одной оси можно и без кватернионов вращать правильно, главное понимать что делаешь..

Я имею в виду, что все входы в углах Эйлера переводятся в кватернионы.
"Unity internally uses Quaternions to represent all rotations."

Re: Глюк с осями(Помогите выявить глюк)

СообщениеДобавлено: 06 дек 2010, 17:04
Skval
Вот я прекрепил сценку прошу обратить внимание что объект должен вращаться по другой оси, попробуйте в коде элементарно заменить Z на Y ничего не изменится, хотя ось должна была смениться они же совпадать не могут.

Re: Глюк с осями(Помогите выявить глюк)

СообщениеДобавлено: 06 дек 2010, 17:28
Zaicheg
Код: Выделить всё
transform.eulerAngles += new Vector3(0, 0, Time.deltaTime * 30f);

Из справки по Transform.eulerAngles
"Only use this variable to read and set the angles to absolute values. Don't increment them, as it will fail when the angle exceeds 360 degrees. Use Transform.Rotate instead. "

Через Rotate я получаю ожидаемые и понятные результаты (и не забываем про аргумент типа Space).

Re: Глюк с осями(Помогите выявить глюк)

СообщениеДобавлено: 06 дек 2010, 17:46
Skval
а если мне повернуть надо на определённый градус, а не постоянно вращать? я пробывал через rotation тоже самое происходит если наклон 270

Re: Глюк с осями(Помогите выявить глюк)

СообщениеДобавлено: 06 дек 2010, 18:34
Zaicheg
Skval писал(а):а если мне повернуть надо на определённый градус, а не постоянно вращать?

void Start() { transform.Rotate(new Vector(0, 0, определённый_градус), Space.Self) }
Например.

я пробывал через rotation тоже самое происходит если наклон 270

Не через rotation, а через Rotate.

Re: Глюк с осями(Помогите выявить глюк)

СообщениеДобавлено: 06 дек 2010, 19:06
Skval
Да дело в том что я нахожу наклон через нормали для объекта в кватерионах и мне надо, ещё дополнительно повернуть объект вокруг своей оси...ну ладно попробую сам что нибудь намутить...

Re: Глюк с осями(Помогите выявить глюк)

СообщениеДобавлено: 06 дек 2010, 19:13
Zaicheg
Skval писал(а):Да дело в том что я нахожу наклон через нормали для объекта в кватерионах и мне надо, ещё дополнительно повернуть объект вокруг своей оси...ну ладно попробую сам что нибудь намутить...

Метод Rotate полностью решает вашу задачу.

Re: Глюк с осями(Помогите выявить глюк)

СообщениеДобавлено: 06 дек 2010, 22:42
Golandez
Поскольку подглючил ТС, тема перемещена в соответствующий раздел.