Size: a a a

2020 May 15

ВТ

Виталий Тиаров... in unity3d.ru
Grygory Dyadichenko
Ну вводишь второй вектор. Тут важно просто понять, что значит скорректировать) Если складывать два вектора равной длинны (например нормализованные), то нормализованная сумма даст биссектрису. То есть по сути смещение в половину угла между двумя векторами)
про это я вкурсе, но это не подходит
источник

GD

Grygory Dyadichenko in unity3d.ru
Виталий Тиаров
про это я вкурсе, но это не подходит
В плане не подходит) Тогда я не понимаю, что за коррекция)
источник

GD

Grygory Dyadichenko in unity3d.ru
Не суть через что считать) Можно просто в углах) Так как ось вращения одна - Y
источник

ВТ

Виталий Тиаров... in unity3d.ru
например я пробовал добавлять VEctor3.right или left
но потом дошло что оно же делает это независимо от текущего направления
источник

ВТ

Виталий Тиаров... in unity3d.ru
и если постоянно добавлять right, то он интерполируется к нему
источник

GD

Grygory Dyadichenko in unity3d.ru
Так как, как только ты написал Y=0 для направления, у тебя плоскость вращения XZ. И я к тому, что кватернионы тебе не нужны
источник

GD

Grygory Dyadichenko in unity3d.ru
Виталий Тиаров
например я пробовал добавлять VEctor3.right или left
но потом дошло что оно же делает это независимо от текущего направления
Ну для этого есть transform.right
источник

ВТ

Виталий Тиаров... in unity3d.ru
так я не с трансформ работаю,  а с вектором разности как видишь
источник

GD

Grygory Dyadichenko in unity3d.ru
Или можно взять перпендикуляр от последнего направления)
источник

GD

Grygory Dyadichenko in unity3d.ru
Перпендикуляр дай бог памяти, лень гуглить - это у нас (dy, -dx) если мне память не изменяет)
источник

GD

Grygory Dyadichenko in unity3d.ru
Вот мы и получили перпендикулярное направление - это вроде правое. Чтобы левое получить, надо на -1 домножить
источник

GD

Grygory Dyadichenko in unity3d.ru
В случае вектора из начала координат (чем и является дирекшн) - это сводится к (y, -x) так как вторая компонента 0
источник

GD

Grygory Dyadichenko in unity3d.ru
Ну только у тебя будет не «y x», а new Vector3(dir.z, 0, -dir.x);
источник

GD

Grygory Dyadichenko in unity3d.ru
Так как движемся мы в плоскости XZ
источник

GD

Grygory Dyadichenko in unity3d.ru
А Vector3.right конечно ничем не поможет - это просто (1,0,0) который даёт мировое направление, а не локальное. Но в 2д всё просто, если дирекшн считать за форвард, то правый перпендикуляр к нему - это right. А в 2д формула перпендикуляра тривиальная. Это в 3д у тебя чуть посложнее, там надо знать свойство, что векторное произведение двух векторов даёт нормаль к образованной ими плоскости (по направлению, если не ошибаюсь длинна вектора там математически - это площадь треугольника образованного этими векторами)
источник

GD

Grygory Dyadichenko in unity3d.ru
Но вот в площади я не уверен, 5 лет с вуза прошло :) Но длинна это что-то там ещё) Может и площадь)
источник

VE

Vitaly Epishin in unity3d.ru
@Tiarov Посмотри что такое матрица поворота и ее применение
источник

GD

Grygory Dyadichenko in unity3d.ru
А можно не считать вектора, а написать +90 градусов к вращению по оси Y)

С кватернионами надо в 3д работать, так как при понимании они быстрее роторов и матриц поворота, удобнее матриц поворота, а углы эйлера от лукавого) Просто по двум причинам: проблема складывания рамок и lerp) Поэтому анимации юнити с поворотами по нескольким плоскостям это боль)
источник

GD

Grygory Dyadichenko in unity3d.ru
Vitaly Epishin
@Tiarov Посмотри что такое матрица поворота и ее применение
Да не нужна она тут) Чтож вы из гаубиц по воробьям бьёте) Давайте и матрицы в сущности в 2д случае фигачить) Где достаточно школьной программы) И отражения не -1 делать, а преобразованием хаусхолдера) Оно в отличии от -1 верно работает в любой системе координат и размерности пространства :)
источник

M

Max in unity3d.ru
я вообще нихера не понимаю что происходит у парня выше, то он про повороты пишет, то в коде вектора складывает...
источник