Соединить кривой два объекта в Unity3D
Привет!
Хочу поделиться небольшим фрагментом кода, который позволяет соединить два игровых объекта в трехмерном пространстве Unity3D без установки плагина. В моем случае это понадобилось для обозначения связи между двумя притягивающимися телами.
Если вдаваться в теорию, то в данном случае строится кривая Безье по трем опорным точкам по осям X и Y, а ось Z рассчитывается линейно. При необходимости можно довольно легко ввести четвертую и сделать изгиб более интересным. Очень рекомендую эту статью, всё предельно доступно.
Ниже сам код:
Как это быстро применить:
1) Потребуется некая (например, логическая) переменная. Когда нам надо показывать кривую, делаем ее true. В методе Update вызываем Curves, если эта переменная true.
2) У меня этот скрипт висит на подвижном объекте, поэтому мы указываем только второй объект
3) В примере нет удаления уже не нужной кривой, так как это зависит от ваших потребностей. Мне нужно, чтобы кривая удалялась, когда отпускают кнопку, так что на это событие и стоит удаление
4) В примере кривая строится из 10 отрезков. Это связано с тем, что игра делается под браузеры, и, соответственно, я экономлю на всём. Чтобы увеличить плавность, надо увеличить количество отрезков
Как итог: я не гарантирую, что это лучшее и идеально написанное решение, но если вам нужно, оно решит эту простую задачу. Всем хорошего дня :)