1. 程式人生 > >unity手機端指南針安卓測試有效

unity手機端指南針安卓測試有效

建立如圖遊戲物件,
注意指南針初始旋轉值為0,0,0,而且圖片北方朝向正前方

新建指令碼Compass.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
public class Compass : MonoBehaviour {

	// Use this for initialization
	void Start () {
        Input.compass.enabled = true;
    }
    //百度一下利用Input.compass實現指北針


    //OnGUI的呼叫次數
    void OnGUI()
    {
        //Input.location.Start();
        ////地理北極就是北方,也是磁南極
        //GUILayout.Label(" rawVector: " + Input.compass.rawVector.ToString() //用microteslas測量的原始地磁資料
        //    + " trueHeading: " + Input.compass.trueHeading.ToString()   //相對應地理北極的度數
        //    + " headingAccuracy: " + Input.compass.headingAccuracy.ToString() //標題度數的準確度
        //    + " magneticHeading: " + Input.compass.magneticHeading.ToString(), GUILayout.Width(5000), GUILayout.Width(200));//相對於磁北極的度數
    }
    [SerializeField] Text text;
    [SerializeField] Text text1;
    [SerializeField] Text text2;
    [SerializeField] Text text3;
    [SerializeField] Image compass;
    float dushu = 0;//記錄北方度數
    float tempdushu = 0;//臨時記錄資料來判斷角度變化是否大於2
    // Update is called once per frame
    void FixedUpdate () {
        //如何確定參照物
        //當度數為  358-2度  手機的正前方就是北方



        Input.location.Start();
        text.text = " rawVector: " + Input.compass.rawVector.ToString();//用microteslas測量的原始地磁資料

        //相對應地理北極的度數 手機頭正對方向  北方360/0   東方90     西方180    南方270  
        text1.text = " trueHeading: " + Input.compass.trueHeading.ToString();   
      
        text2.text = " headingAccuracy: " + Input.compass.headingAccuracy.ToString(); //標題度數的準確度
        text3.text = " magneticHeading: " + Input.compass.magneticHeading.ToString();////相對於磁北極的度數
        dushu = Input.compass.trueHeading;

        /*trueHeading          image/z
      北方358  360 0 2                0
       東方88  92                   90
       南方269 272                 270
       西方180                    180


        */

        //為防止抖動  度數變化超過二的時候才賦值
        if (Mathf.Abs(tempdushu-dushu)>3)
        {
            tempdushu = dushu;
            compass.transform.eulerAngles = new Vector3(0, 0, dushu);
        }
          
        
    }
}

然後掛載指令碼,拖相關Text,以及Image

,然後打包到手機測試即可,圖片最尖的地方就是北方