Actualmente estoy tratando de detectar la entrada de desplazamiento de la rueda del mouse para mi juego 2D que estoy haciendo actualmente en Unity Engine.
Estoy usando el nuevo sistema de entrada y actualmente estoy atascado con el siguiente código.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem.Controls; public class ZoomController : MonoBehaviour { private PlayerControls playerControls; private void Awake() { playerControls = new PlayerControls(); } private void OnEnable() { playerControls.Enable(); } private void OnDisable() { playerControls.Disable(); } void Start() { } void Update() { if (playerControls.Land.Zoom.ReadValue<Vector2>().y >= 1) { Debug.Log("Scroll 1"); } else if (playerControls.Land.Zoom.ReadValue<Vector2>().y <= -1) { Debug.Log("Scroll 2"); } } }
Si ejecuto el código no pasa nada y no sé por qué.
Si trata la rueda de desplazamiento como un "eje 1D", debe decirle a Unity qué lado (arriba o abajo) debe ganar. De lo contrario, solo recibirá un valor promedio que siempre será 0.
Otra opción que es mejor sería dejar pasar el valor y agregar un "Enlace".
Tenga en cuenta que el valor de desplazamiento predeterminado es 120 en la mayoría de los sistemas, pero en Linux parece ser 1. Por lo tanto, recomendaría simplemente verificar si el valor es mayor o menor que 0 para decidir si se desplaza hacia arriba o hacia abajo.
float z = zoom.ReadValue<float>(); if (z > 0) Debug.Log("Scroll UP"); else if (z < 0) Debug.Log("Scroll DOWN");
Usando código solo puedes hacer esto:
Vector2 vec = Mouse.current.scroll.ReadValue(); scroll = vec.y