Соединить кривой два объекта в Unity3D
Хочу поделиться небольшим фрагментом кода, который позволяет соединить два игровых объекта в трехмерном пространстве Unity3D без установки плагина. В моем случае это понадобилось для обозначения связи между двумя притягивающимися телами.
Если вдаваться в теорию, то в данном случае строится кривая Безье по трем опорным точкам по осям X и Y, а ось Z рассчитывается линейно. При необходимости можно довольно легко ввести четвертую и сделать изгиб более интересным. Очень рекомендую эту статью, всё предельно доступно.
Examples/curves.cs at main · Paupertony/Examples
Contribute to Paupertony/Examples development by creating an account on GitHub.
Как это быстро применить:
1) Потребуется некая (например, логическая) переменная. Когда нам надо показывать кривую, делаем ее true. В методе Update вызываем Curves, если эта переменная true.
2) У меня этот скрипт висит на подвижном объекте, поэтому мы указываем только второй объект
3) В примере нет удаления уже не нужной кривой, так как это зависит от ваших потребностей. Мне нужно, чтобы кривая удалялась, когда отпускают кнопку, так что на это событие и стоит удаление
4) В примере кривая строится из 10 отрезков. Это связано с тем, что игра делается под браузеры, и, соответственно, я экономлю на всём. Чтобы увеличить плавность, надо увеличить количество отрезков
Как итог: я не гарантирую, что это лучшее и идеально написанное решение, но если вам нужно, оно решит эту простую задачу. Всем хорошего дня 🙂
Склеивание объектов при столкновении, с последующим перемещением за ним
Задача заключается в столкновении и приклеивание с последующим перемещением.
Не могу понять, как это сделать? К примеру: есть объект который перемещается и допустим, при нажатии на кнопку, он опускается вниз до другого объекта, когда он сталкивается с ним происходит OnTriggerEnter , как мне склеить их друг с другом, чтобы объект 1 поднял за собой объект 2? Что для этого нужно использовать?
Отслеживать
задан 14 сен 2019 в 6:15
111 10 10 бронзовых знаков
либо добавить один в другому потомком, либо использовать Joints
14 сен 2019 в 6:22
@StrangerintheQ, а как мне кодом сделать его потомком, когда он просто валяется на терейне, а другой по нему двигается? Как мне через код задать ему Joints?
14 сен 2019 в 6:23
14 сен 2019 в 6:24
@StrangerintheQ, разобрался. Без вас бы не получилось =)) оформите ответ. Чтобы я принял!
14 сен 2019 в 7:03
По-видимому я не успел =)
14 сен 2019 в 20:19
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Через Parent target :
//вешать на твоего плеера к которому аттачить. //И не забыть проставить тег у всех обьектов которые должны уметь аттачиться public void OnCollisionEnter (Collision col) < if (col.gameObject.tag == "AttachibleObj") < col.gameObject.parent = gameObject.transform; >>
//вешать на твоего плеера к которому аттачить. //И не забыть проставить тег у всех обьектов которые должны уметь аттачиться public void OnCollisionEnter (Collision col) < if (col.gameObject.GetComponent(RigidBody)!=null && col.gameObject.tag == "AttachibleObj")) < joint = miningTool.gameObject.AddComponent(); joint.connectedBody = col.rigidbody; > >
через Collider: itTrigger :
private void OnTriggerEnter(Collider col) < string tag = collider.tag; if (col.gameObject.tag == "AttachibleObj") < joint = miningTool.gameObject.AddComponent(); joint.connectedBody = col.GetComponent(); > >
Как объединить сгенерированые объекты в Unity?

У меня есть рандомно генерированный лабиринт, который создается за счет построения 4 стен и 1 пола в каждой ячейке. В итоге, после генерации, в проекте у меня создаются огромное количество отдельных объектов(4 стены и пол), которые в итоге формируют нужный мне лабиринт.
Проблема такова: я хочу, что бы после генерации все эти объекты соединялись в один, что бы получался не лабиринт который сделан из множества частиц, а один цельный лабиринт, возможно ли это сделать?
- Вопрос задан более трёх лет назад
- 3849 просмотров
Объединение объектов в unity 3d
Народ, подскажите как (если это возможно) объединить объекты в Unity3d так, что они считались одним объектом (с одним именем). Надо чтоб при включении/отключении рендера мешей и коллайдеров пропадал весь объект, созданный из нескольких
Голосование за лучший ответ
Сделай группу объектов дочерними одному трансформу, включай-выключай этот трансформ.
Дмитрий СадчиковЗнаток (315) 8 лет назад
Спасибо. А не подскажите как это сделать? Просто в юнити совсем недавно (для дипломной работы нужен)
Александр Парамонов Мыслитель (7500) childObj.transform.parent = parentObj.transform;
создать массив. Пишешь GameObject[] название = условие которым обладают все объекты. Ну по тегу например GameObject.FindGameObjectsWithTag(«тег»)
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.