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 System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ShakePhone : MonoBehaviour
{
private float old_y = 0;
private float new_y;
private float currentDistance = 0;
public float distance = 2;
void Update () {
new_y = Input.acceleration.y;
currentDistance = new_y - old_y;
old_y = new_y;
if (currentDistance > distance)
{
Handheld.Vibrate();
}
}
}