Как сделать гибкую систему взаимодействия с объектами как в игре granny в unity?
Как в юнити сделать систему взаимодействия с предметами как в игре granny и hello neighbor с подбором, использованием и бросанием предметов, также чтобы можно было применить предмет к другим предметам, и происходило какое то действие. Чтобы эта система была многофункциональной, и работала для разных предметов, и каждый предмет выполнял свою действие, например ключ открывал замок на двери, после чего дверь могла открываться, или провод можно было подобрать и применить к выключателю, после чего можно было бы включить свет. Я не смог придумать нормальную систему для взаимодействия с другими объектами, я вешал на каждый подбираемый объект скрипт PickUpItem, и этот компонент пускал луч, если он находится в руке, и проверял, попал ли он на компонент с которым может взаимодействовать через метод TryGetComponent, и получал компонент с которым может взаимодействовать данный компонент, а потом вызывал у каждого компонента разные методы в зависимости от компонента, если это ключ, и его рейкаст попадает на объект с компонентом замок, то вызывал у него метод Unlock(), Но Эта система показалось мне не оптимизированной и не поддерживаемой в будущем, так как с появлением новых объектов с которыми можно взаимодействовать, этот скрипт будет всё более запутанным становится, как можно выйти из этой проблемы? Может можно как то через интерфейсы или с помощью полиморфизма сделать более оптимизированно, или может паттерны использовать?