TestCompass.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using System;
  6. public class TestCompass : MonoBehaviour
  7. {
  8. // Use this for initialization
  9. void Start()
  10. {
  11. Input.compass.enabled = true;
  12. }
  13. //百度一下利用Input.compass实现指北针
  14. //OnGUI的调用次数
  15. void OnGUI()
  16. {
  17. //Input.location.Start();
  18. // 地理北极就是北方,也是磁南极
  19. //GUILayout.Label(" rawVector: " + Input.compass.rawVector.ToString() //用microteslas测量的原始地磁数据
  20. // + " trueHeading: " + Input.compass.trueHeading.ToString() //相对应地理北极的度数
  21. // + " headingAccuracy: " + Input.compass.headingAccuracy.ToString() //标题度数的准确度
  22. // + " magneticHeading: " + Input.compass.magneticHeading.ToString(), GUILayout.Width(5000), GUILayout.Width(200));//相对于磁北极的度数
  23. }
  24. [SerializeField] Text text;
  25. [SerializeField] Text text1;
  26. [SerializeField] Text text2;
  27. [SerializeField] Text text3;
  28. [SerializeField] Image compass;
  29. float dushu = 0;//记录北方度数
  30. float tempdushu = 0;//临时记录数据来判断角度变化是否大于2
  31. // Update is called once per frame
  32. void FixedUpdate()
  33. {
  34. //如何确定参照物
  35. //当度数为 358-2度 手机的正前方就是北方
  36. Input.location.Start();
  37. text.text = Input.compass.rawVector.ToString();//用microteslas测量的原始地磁数据
  38. //相对应地理北极的度数 手机头正对方向 北方360/0 东方90 西方180 南方270
  39. text1.text = Input.compass.trueHeading.ToString();
  40. text2.text = Input.compass.headingAccuracy.ToString(); //标题度数的准确度
  41. text3.text = Input.compass.magneticHeading.ToString(); //相对于磁北极的度数
  42. dushu = Input.compass.trueHeading;
  43. /*trueHeading image/z
  44. 北方358 360 0 2 0
  45. 东方88 92 90
  46. 南方269 272 270
  47. 西方180 180
  48. */
  49. //为防止抖动 度数变化超过二的时候才赋值
  50. if (Mathf.Abs(tempdushu - dushu) > 3)
  51. {
  52. tempdushu = dushu;
  53. // compass.transform.eulerAngles = new Vector3(0, 0, dushu);
  54. compass.transform.localRotation = Quaternion.Euler(0, 0, dushu);
  55. }
  56. }
  57. }