Перейти к содержимому

Как объединить объекты в юнити

  • автор:

Соединить кривой два объекта в 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?

c1685e7018724f558e71327ee2d40cc3.png

У меня есть рандомно генерированный лабиринт, который создается за счет построения 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *