# RaycastAimInput и ViewPortDragInput

Это 2 готовых контроллера для игр от первого лица. Их готовые префабы для использования есть в папке Prefabs/StarterPack/UI с такими же именами. Перед использованием их надо поместить после джостика (или вместо джостика) в канвас. Далее их можно будет использовать через эвенты как синглтоны из любой точки кода.

_**ViewportDragInput**_\
Этот контроллер позволяет отслеживать дельту пальца на экране. Эвент OnDragPointer в контроллере будет вызываться каждый раз, когда игрок будет двигать пальцем по экрану. Первый параметр эвента указывает дельту сдвига пальца за кадр, а второй - текущую позицию пальца. С помощью этого контроллера было реализовано управление оружием в префабе ViewPortDragExampleGun. Если поместить его в объект камеры, и включить данный контроллер, то пальцем можно будет поворачивать наведение оружия с ограничением на угол поворота:\


![](https://lh4.googleusercontent.com/4LEy1gAdKjDQpAERO9zcDqEMh-BVG8XUrypTkaTP8zRuRU8X_38jXBdVGuc6uZRxy9BbvfoSkiZOoERUa6o0O3lPaDWj6Z1ze0IAVJUa-qV4fZ_GWJzQMoazEq5c_DmMUmcY_J7p20slfgPN7A)

_**RaycastAimInput**_\
Контроллер позволяет отслеживать точку в мире, куда попал палец игрока. Эвент OnAim вызывается, когда игрок двигает пальцем по экрану. Первый параметр эвента - поворот объекта, который направлен в точку попадания, при этом учитывается offset объекта относительно камеры, который где-то до этого нужно задать через метод SetGunOffset. Обычно туда достаточно положить локальную позицию пушки в старте, если она не меняется и находится прямо в камере. Второй аргумент эвента - мировая точка попадания пальца. Если палец попал в пустоту или объект слишком далеко, то там будет точка в воздухе, вектор которой до камеры ограничен расстоянием raycastMaxDistance. Пример реализации управления оружием с помощью этог оконтроллера в префабе RayCastAimExampleGun. Для его работы нужно его закинуть в объект камеры. Оружие будет поворачиваться в точку наведения игрока:\


![](https://lh5.googleusercontent.com/oBfIClUqdWtfkFuJyI69mH5_zXj2pucgcIVVUrGkAUEA759CbCVrjx0nGd-oK2vn6JDahu1v5IRsWN-fM9l_LA4N-3SeWdWoZj9Llt4yvubejYrpH_d_CjfDBMBzZAwscU2CdlYMbIXw-ePnJg)

###
