Физические соединения объектов (сокеты)
Часто в проектах возникает необходимость совмещать объекты определенным образом - как в конструкторе. Для упрощения реализации данного функционала Varwin SDK предоставляет готовые компоненты: Plug Point
и Socket Point
Правильно настроенные сокеты позволяют без лишних усилий устанавливать деталь на место. Когда деталь оказывается вблизи места установки, появляется силуэт объекта, показывающий, что деталь можно присоединить
Сокеты можно соединить только с помощью рук - хотя бы один из объектов должен находиться в руке, чтобы соединение было возможно. Если просто двигать детали с помощью посторонних объектов, детали соединяться не будут
Концепция вилка - розетка
Соединение различных объектов в Varwin спроектировано по принципу вилка - розетка. Этот принцип подразумевает, что существует определенная розетка (socket) и вилка (plug). Если вилка подходит по типу к розетке, то вилку можно соединить с розеткой.
Ограничения:
- Если тип вилки не подходит к розетке, то их нельзя соединить
- У одной розетки может быть несколько доступных для соединения типов вилок
- У одной вилки может быть только один тип вилки
- Одна розетка может быть соединена только с одной вилкой в один момент времени
Розетка (Socket)
Чтобы добавить розетку к объекту, на него необходимо добавить компонент SocketPoint
Параметры компонента SocketPoint
Параметр | Описание |
---|---|
Can Connect | Можно ли подключить вилку к розетке |
Available Keys | Список ключей. Каждый ключ определяет тип вилки, которая может быть воткнут в розетку |
Так как соединение происходит при помощи физики, на объекте с компонентом SocketPoint
должен быть коллайдер с включенным флагом IsTrigger
. Этот коллайдер будет определять область, в которой детали "видят" друг друга
Вилка (Plug)
Чтобы добавить вилку к объекту, на него необходимо добавить компонент PlugPoint

Параметры компонента PlugPoint
Параметр | Описание |
---|---|
Can Connect | Можно ли подключить вилку к розетке |
Key | Тип вилки. Чтобы была возможность подключить эту вилку, у розетки должен быть такой же ключ в списке AvailableKeys |
Can Disconnect | Можно ли отключить вилку от розетки |
На объекте с компонентом PlugPoint
должен быть коллайдер с включенным флагом IsTrigger
. Этот коллайдер будет определять область, в которой детали "видят" друг друга
Создание соединяющихся объектов
Разберем, каким образом можно создать соединение, показанное выше:
- Создание объектов. В Varwin SDK создать два varwin объекта: куб (Socket Cube) и сферу (Plug Sphere). Установите флаг
Add Behaviours At Runtime
для в компонентеVarwinObjectDescriptor
для каждого объектаПодробнее: Создание объектов
- Создание розетки. В иерархии объекта SocketCube создать пустой объект Socket Point. Добавить на него коллайдер, включить у коллайдера свойство
Is Trigger
. Добавить компонентSocketPoint
. В спискеAvailable Keys
переименовать ключ наsphere
(или любое другое название) - Создание вилки. В иерархии объекта PlugSphere создать пустой объект Plug Point. Добавить на Plug Point коллайдер. Включить свойство
Is Trigger
у коллайдера. Добавить компонентPlugPoint
- Позиционирование. Установите позицию дочернего объекта Socket Point. При соединении, именно в эту позицию будет перемещен объект с
Plug Point
. Для наглядности можете поставить объект сPlugPoint
так, как он должен находиться в соединенном состоянии и по нему выставлять позицию объектаSocketPoint
- Билд и импорт объекта. Сбилдите объект и импортируйте его в Varwin XRMS
Подробнее: Билд объектов, Импорт контента
- Проверка. Расположите оба объекта на сцене. Не забудьте установить флаг Можно брать в руку у компонента Интерактивность в инспекторе Varwin. Запустите режим предпросмотра, возьмите один из объектов в руку и поднесите ко второму. После того как появиться силуэт, отпустите объект из руки