Как более правильно реализовать управление камерой с помощью New Input System?C#

Место общения программистов C#
Ответить
Anonymous
 Как более правильно реализовать управление камерой с помощью New Input System?

Сообщение Anonymous »


Я решил поместить ответственность за ввод с клавиатуры и мыши в отдельный скриптовый объект. Итак, это мой сценарий:

с использованием UnityEngine; использование UnityEngine.InputSystem; [CreateAssetMenu(fileName = "CameraInputProvider")] общедоступный класс CameraInputProvider: ScriptableObject { частный PlayerInput _playerInput; частный InputAction _mousePosition; частный InputAction _movement; частный InputAction _toggleDrag; частный InputAction _toggleRotation; частный InputAction _rotation; частный InputAction _zoom; частная пустота OnEnable() { _playerInput = новый PlayerInput (); _playerInput.Camera.Enable(); _mousePosition = _playerInput.Camera.MousePosition; _movement = _playerInput.Camera.Movement; _toggleDrag = _playerInput.Camera.ToggleDrag; _toggleRotation = _playerInput.Camera.ToggleRotation; _rotation = _playerInput.Camera.Rotation; _zoom = _playerInput.Camera.Zoom; } частная пустота OnDisable() { _playerInput.Camera.Disable(); } общедоступный Vector2 GetMousePosition() { return _mousePosition.ReadValue(); } общедоступный Vector2 GetKeyboardInput() { return _movement.ReadValue(); } общественный логический IsDragStarted() { вернуть _toggleDrag.WasPressedThisFrame(); } общественный логический IsDragContinues() { вернуть _toggleDrag.IsPressed(); } общественный логический IsRotate() { вернуть _toggleRotation.IsPressed(); } общедоступное число с плавающей запятой GetRotationDirection() { return _rotation.ReadValue(); } общедоступное число с плавающей запятой GetZoomDirection() { return _zoom.ReadValue(); } } Я пытался реализовать этот скрипт через события, однако мне это не кажется лучшей идеей. Прямое чтение ввода, кажется, работает быстрее и выглядит более логичным для перемещения в пространстве. Как я могу улучшить реализацию этого скрипта? Буду очень благодарен за любые советы!
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»