Как поворачивать обьект относительно точки в пространстве?
Способ который я нашел это RotateAround(),но он мне не подходит
Идея в том,что,есть куб который перемещается за счет того что перекатывается с грани на грань.Чтобы сделать это,я хочу поворачивать его относительно точки в пространстве,которая будет отвечать за грань этого куба.
И почему это RotateAround не подходит? Сложно или лень?
1. Переворот не относительно точки, а относительно оси грани.
2. Первым аргументом RotateAround является центр относительно которого происходит вращение. Берете точку на грани.
3. Второй аргумент это ось вращения. Высчитываете вектор грани куба. Вокруг этой оси и вращаете
Подключайте познания в тригонометрии для вывода формул. Я тоже не мастер. но рассчитать точку на грани. когда известно, что это куб и его сторона, это задачка несложная.
hipa, эмм, тогда я не понял вопроса.
Вы говорите "перекатывается", что как по мне означает некую заданную скорость, но не в этом суть.
Я исходил из следующего:
1. Куб в определенный момент поворачивается на некое количество градусов, пока не ляжет на грань
2. Я отбросил неровности и решал задачу на плоскости.
Если взять объявление:
transform.RotateAround(%Точка%, %Вектор оси вращения%, %Количество градусов%);
То бишь, если задаете 90, то он и повернется на 90 за такт. Если не применять Time.deltaTime, то результат вроде как норм будет.
Только ясен дрын его не в Update пихать надо. Отдельный войд и запуск по требованию, как вариант.
P.S. Если же нужен плавный перекат, то повозитесь с дельтатаймом и временем переката.