Здравствуйте!
Нужно реализовать класс, позволяющий обеспечить стыковку нескольких блоков друг с другом, как в LEGO, с тем лишь отличием, что стыковаться можно со всех сторон. Например, я подвожу один блок этого класса к другому на определенное расстояние и они сцепляются. Если подведу эти два сцепленных блока к другому, то они сцепятся и с ним.
Все сцепляющиеся блоки - наследники одного класса.
Прилагаю текущую реализацию: в качестве точек соединения используется компонент Arrow.
Изначально проект был для Leap Motion, но эту функциональность можно спокойно убрать..
Если рядом с коллайдером появляется объект того же типа, который не удерживается рукой (Leap Motion), то можно его прикрепить по данным координатам.
Это работает только при прикреплении сверху вниз, в остальных случаях происходят непредсказуемые вещи...
Не могли бы вы помочь?
Ссылка: http://rghost.ru/88WnwQx9L
Заранее благодарен
P. S. Я ни в коем случае не прошу, чтобы код писали за меня, но за последние сутки у меня раз 10 вылетел Unreal Engine с критическими ошибками, и я не знаю, с чем это связано. Мне лишь нужен совет по поводу того, как можно исправить данную реализацию, или совет по тому, как правильнее сделать архитектуру.Добавлено (06 апреля 2016, 20:02)
---------------------------------------------
я пробовал делать с помощью одного общего коллайдера и заранее вбитых с помощью arrow трансформов. В течение двух часов скину наработки, но словами ситуация следующая:
Есть static mesh куб. Вокруг него есть box collider. Вокруг куба находится 6 arrow по одной для каждой грани. Их координаты взяты с учётом того, что стыковать кубики будем по центру.
Я ловлю begin overlap коллайдера. Проверяют, не присоединён ли блок уже либо блок который отловлен является родителем. После этого нахожу ближайшую к точке контакта стрелку и стыкуюсь с actor с помощью attach. Затем переношу координаты к координатам стрелки.
Как я уже писал, при стыковке снизу вверх и сверху вниз проблем нет. Однако когда я стыкуюсь с боковыми гранями, кубикки просто улетают. После выполнения появляются warning и о том, что нельзя делать циклический attach, хотя я и пррвожу проверки на это в bp.
Также с использованием attach возникает следующая проблема: оба кубика равноправные, и если сдвинуть один из них, то должен сдвинуться и другой, а attachh actor to actor этого не даёт.
Третья - найти ближайший Arrow
Четвертый - вдруг уже присоединяли этот куб