手機搖一搖功能在平時項目開發中是很常見的需求,利用Unity的重力感應可以很方便的實現該功能。
Unity簡化了重力感應的開發, 通過訪問Input.acceleration屬性,取回加速度傳感器的值。首先我們看一下重力傳感器的方向問題。Unity3D中重量的取值范圍是 -1.0 到 +1.0.
X軸:home按鍵在下手機面朝天向右旋轉90度重力分量為+1.0 向左旋轉90度重力分量為-1.0
Y軸:home按鍵在上手機背朝自己重力分量為+1.0 home按鍵在下手機面朝自己重力分量為-1.0
Z軸:手機面朝地面重力分量為+1.0 手機面朝天空重力分量為-1.0
方向如下圖所示。

unity中使用Input.acceleration的x,y,z屬性即可獲得重力分量:
Input.acceleration.x; 重力感應X軸的重力分量
Input.acceleration.y; 重力感應Y軸的重力分量
Input.acceleration.z; 重力感應Z軸的重力分量
搖一搖功能代碼如下:
using UnityEngine;using System.Collections; public class CellphoneVibrate : MonoBehaviour{ //記錄上一次的重力感應的Y值 private float old_y = 0; //記錄當前的重力感應的Y值 private float new_y; //當前手機晃動的距離 private float currentDistance = 0; //手機晃動的有效距離 public float distance; void Update() { new_y = Input.acceleration.y; currentDistance = new_y - old_y; old_y = new_y; if (currentDistance > distance) { //實現手機晃動震動效果 Handheld.Vibrate(); } }}以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答