Часто в проектах возникает необходимость совмещать объекты определенным образом - как в конструкторе. Для упрощения реализации данного функционала Varwin SDK предоставляет готовые компоненты: Plug Point и Socket Point

Правильно настроенные сокеты позволяют без лишних усилий устанавливать деталь на место. Когда деталь оказывается вблизи места установки, появляется силуэт объекта, показывающий, что деталь можно присоединить

Сокеты можно соединить только с помощью рук - хотя бы один из объектов должен находиться в руке, чтобы соединение было возможно. Если просто двигать детали с помощью посторонних объектов, детали соединяться не будут

Концепция вилка - розеткаLink to Концепция вилка - розетка

Соединение различных объектов в Varwin спроектировано по принципу вилка - розетка. Этот принцип подразумевает, что существует определенная розетка (socket) и вилка (plug). Если вилка подходит по типу к розетке, то вилку можно соединить с розеткой.

Ограничения:

  • Если тип вилки не подходит к розетке, то их нельзя соединить
  • У одной розетки может быть несколько доступных для соединения типов вилок
  • У одной вилки может быть только один тип вилки
  • Одна розетка может быть соединена только с одной вилкой в один момент времени

Розетка (Socket)Link to Розетка (Socket)

Чтобы добавить розетку к объекту, на него необходимо добавить компонент SocketPoint

Параметры компонента SocketPoint

Параметр

Описание

Can ConnectМожно ли подключить вилку к розетке
Available KeysСписок ключей. Каждый ключ определяет тип вилки, которая может быть воткнут в розетку

Так как соединение происходит при помощи физики, на объекте с компонентом SocketPoint должен быть коллайдер с включенным флагом IsTrigger. Этот коллайдер будет определять область, в которой детали "видят" друг друга

Вилка (Plug)Link to Вилка (Plug)

Чтобы добавить вилку к объекту, на него необходимо добавить компонент PlugPoint

Параметры компонента PlugPoint

Параметр

Описание

Can ConnectМожно ли подключить вилку к розетке
KeyТип вилки. Чтобы была возможность подключить эту вилку, у розетки должен быть такой же ключ в списке AvailableKeys
Can DisconnectМожно ли отключить вилку от розетки

На объекте с компонентом PlugPoint должен быть коллайдер с включенным флагом IsTrigger. Этот коллайдер будет определять область, в которой детали "видят" друг друга

Создание соединяющихся объектовLink to Создание соединяющихся объектов

Разберем, каким образом можно создать соединение, показанное выше:

  1. Создание объектов. В Varwin SDK создать два varwin объекта: куб (Socket Cube) и сферу (Plug Sphere). Установите флаг Add Behaviours At Runtime для в компоненте VarwinObjectDescriptor для каждого объекта

    Подробнее: Создание объектов

  2. Создание розетки. В иерархии объекта SocketCube создать пустой объект Socket Point. Добавить на него коллайдер, включить у коллайдера свойство Is Trigger. Добавить компонент SocketPoint. В списке Available Keys переименовать ключ на sphere (или любое другое название)
  3. Создание вилки. В иерархии объекта PlugSphere создать пустой объект Plug Point. Добавить на Plug Point коллайдер. Включить свойство Is Trigger у коллайдера. Добавить компонент PlugPoint

  4. Позиционирование. Установите позицию дочернего объекта Socket Point. При соединении, именно в эту позицию будет перемещен объект с Plug Point. Для наглядности можете поставить объект с PlugPoint так, как он должен находиться в соединенном состоянии и по нему выставлять позицию объекта SocketPoint

  5. Билд и импорт объекта. Сбилдите объект и импортируйте его в Varwin XRMS
  6. Проверка. Расположите оба объекта на сцене. Не забудьте установить флаг Можно брать в руку у компонента Интерактивность в инспекторе Varwin. Запустите режим предпросмотра, возьмите один из объектов в руку и поднесите ко второму. После того как появиться силуэт, отпустите объект из руки