Paso 3: Código para detección del iman
En esta ocasión el imán de nuestros dodocase nos servirá como botón de acción para nuestro personaje pueda disparar, les dejamos el código usado
* "Globals" script *
Static var initialrv: int = 0; Crudo vector brújula para probar el imán contra estático var prevrv: int = 0; Crudo vector brújula para verificar que initialrv es initialrot de var estático válido: ScreenOrientation;
función Start)
{initialrot = Screen.orientation; Input.Compass.Enabled = true; }
función Update () {}
Captura si el initialrv es completamente equivocado
(a veces puede saltar la magnitud de / / 15 a 400, dependiendo de cómo el jugador / / gira el dispositivo). Si (prevrv > initialrv * 23) {initialrv = Mathf.RoundToInt(Input.compass.rawVector.magnitude);}
Coger si el usuario permite girar la pantalla para cambiar la orientación
Si (initialrot! = Screen.orientation || initialrv == 0) {initialrot = Screen.orientation; initialrv = Mathf.RoundToInt(Input.compass.rawVector.magnitude);}
Coger si la magnitud se ha reducido en un
gran cantidad desde la última actualización / / var vectest = Mathf.RoundToInt(Input.compass.rawVector.magnitude); Si (initialrv > vectest * 23) {initialrv = Mathf.RoundToInt(Input.compass.rawVector.magnitude);}
Actualizar prevrv a prueba contra el inicio de la próxima actualización
prevrv = Mathf.RoundToInt(Input.compass.rawVector.magnitude); }
* "GameLogic" script *
Suponiendo que el initialrv de la escritura global es de aproximadamente
consistente con la actual magnitud antes de que un botón / es pulsado, podemos probar contra él. Si aumenta la magnitud / / doble, indica que ha sido el botón magnético / presionado. Si la magnitud aumenta de 23 veces o más, / / indica un falso positivo, momento en el que se restablece la initialrv. var vectest = Mathf.RoundToInt(Input.compass.rawVector.magnitude); Si (vectest > Globals.initialrv * 2)
{/ / Imán de botón
Fire();
}
Este código esta tomado de http://www.sc0ttgames.com/?p=293