// Update is called once per frame void Update() { xFir.writeSample(target.transform.position.x / 5f); targetPos = new Vector3(xFir.getOutput(), transform.position.y, transform.position.z); t = Mathf.Abs(xFir.getOutput() - transform.position.x) * 0.015f; transform.position = Vector3.Lerp(transform.position, targetPos, t); }
private void CalibrateAccelerometer() { int calSampleSize = 2048; Fir calxFir = new Fir(calSampleSize); Fir calyFir = new Fir(calSampleSize); Fir calzFir = new Fir(calSampleSize); for (int i = 0; i < calSampleSize; i++) { calxFir.writeSample(Input.acceleration.x); calyFir.writeSample(Input.acceleration.y); calzFir.writeSample(Input.acceleration.z); new WaitForSecondsRealtime(0.01f); } wantedDeadZone = new Vector3(calxFir.getOutput(), calyFir.getOutput(), calzFir.getOutput()); Quaternion rotateQuaternion = Quaternion.FromToRotation(new Vector3(0f, 0f, -1f), wantedDeadZone); Matrix4x4 matrix = Matrix4x4.TRS(Vector3.zero, rotateQuaternion, new Vector3(1f, 1f, 1f)); calibrationMatrix = matrix.inverse; }