Версия 2.2 ассета Wrapping rope включает в себя новую функцию обертывания движущихся объектов. Как она работает? Очень просто. Есть c# интерфейс IRopeInteraction, в котором декларировано два метода: GetPointVelocity и AddForceAtPosition. Первый нужен для получения скорости движения объекта в заданной точке, а второй для приложения к объекту силы. По сути эти методы аналогичны одноименным методам, которые предоставляет класс Rigidbody и которые использовались в прошлых версиях для взаимодействия с движущимися игровыми объектами. Теперь пользователь сам может написать реализацию этих методов, унаследовав свой собственный класс от интерфейса IRopeInteraction. После этого следует добавить класс с реализацией методов к игровому объекту. Для тех, кому не хочется заморачиваться, новая версия предоставляет целых два класса с реализацией этих методов: DefaultRopeInteraction — в нем реализован только метод GetPointVelocity и этого достаточно для обертывания движущихся объектов, и CharacterRopeInteraction — это пример двустороннего взаимодействия с веревкой анимированного персонажа. Вот как работает новая функция:
Метка: character
Эксперименты с Wrapping Rope — новая функция обертывания анимированных объектов
Веду разработку новой функции для обертывания движущихся объектов без использования компонента Rigidbody.
Существенным ограничением Wrapping rope являлась необходимость использования не кинематического Rigidbody для того, чтобы движущиеся объекты обертывались веревкой. Другими словами, обертывание движущихся объектов было возможно только в режиме игры при наличии компонента Rigidbody с включенной симуляцией физики (флаг IsKinematic должен быть выключен). Новая функция поможет избавится от этого ограничения. При использовании данной функции появится возможность выполнять обертывание объектов в режиме редактирования при перемещении их мышкой, обертывание объектов, анимированных при помощи скрипта, обертывание персонажей со скелетной анимацией. Функция будет добавлена в версию 2.2.