先看一看Unity3D 在iPhone上的重力分布圖。如下圖所示我們可以清晰的看出X Y Z 三個方向的重力分量。Unity3D中重量的取值范圍是 -1.0 到 +1.0.
手機(jī)重力感應(yīng)應(yīng)該對大多數(shù)開發(fā)者并不陌生,在新一代智能手機(jī)Android IOS WP7 很多游戲都是使用手機(jī)自帶重力感應(yīng)功能制作的,強(qiáng)大的Unity3D 游戲引擎當(dāng)然對這個也是***支持的,今天由MOMO帶大家學(xué)習(xí)3D 世界中的手機(jī)重力感應(yīng)。本章我們的目標(biāo)是實(shí)現(xiàn)一個小球在屏幕中通過搖晃手機(jī)重力加速度讓小球在屏幕中移動。以前的Android系列開發(fā)文章中貌似也寫過,其實(shí)原理都是一樣一樣一樣的,廢話不多說了。哇咔咔~~
先看一看Unity3D 在iPhone上的重力分布圖。如下圖所示我們可以清晰的看出X Y Z 三個方向的重力分量。Unity3D中重量的取值范圍是 -1.0 到 +1.0.
X軸:home按鍵在下手機(jī)面朝天向右旋轉(zhuǎn)90度重力分量為+1.0 向左旋轉(zhuǎn)90度重力分量為-1.0
Y軸:home按鍵在上手機(jī)背朝自己重力分量為+1.0 home按鍵在下手機(jī)面朝自己重力分量為-1.0
Z軸:手機(jī)面朝地面重力分量為+1.0 手機(jī)面朝天空重力分量為-1.0
OK! 有了這三組重要的數(shù)值我們就可以控制手機(jī)重力感應(yīng)啦,緊接著我們看看小球重力感應(yīng)的這個游戲小例子。

打開Unity3D 我們將給攝像機(jī)綁定一個腳本,用來響應(yīng)用戶控制手機(jī)來重力感應(yīng)游戲小球的移動。
在Input 這個重要的類中,Unity3D 幫我們封裝了重力加速的方法。
Input.acceleration.x; 重力感應(yīng)X軸的重力分量
Input.acceleration.y; 重力感應(yīng)Y軸的重力分量
Input.acceleration.z; 重力感應(yīng)Z軸的重力分量
new.js
[代碼]js代碼:
02 |
var round : Texture2D; |
04 |
//小球在屏幕中顯示的X Y坐標(biāo) |
15 |
cross_x = Screen.width - round.width; |
16 |
cross_y = Screen.height - round.height; |
21 |
//整體顯示 x y z 重力感應(yīng)的重力分量 |
22 |
GUI.Label(Rect(0,0,480,100),"position is " + Input.acceleration); |
25 |
GUI.DrawTexture(Rect(x,y,256,256),round); |
30 |
//根據(jù)重力分量修改小球的位置這里乘以30的意思是讓小球移動的快一些 |
31 |
x += Input.acceleration.x * 30; |
32 |
y += -Input.acceleration.y * 30; |
38 |
}else if(x > cross_x){ |
44 |
}else if(y > cross_y){ |
重力感應(yīng)的圖片不太好截取,我們看看下面的示意圖,小球可以根據(jù)我的手機(jī)的重力而移動。屏幕左上方正常打印手機(jī)當(dāng)前X Y Z 三個方向的重力分量。

說到這里,可能會有盆友問我如何為3D的物體添加重力感應(yīng)?其實(shí)方法是一樣的,因?yàn)槎际且粯拥牡览?,比如我可以給一個模型綁定一個這樣的腳本,通過 Input.acceleration去拿到當(dāng)前手機(jī)的重力感應(yīng)分量,然后根據(jù)這個分量去計算當(dāng)前模型的位置。細(xì)心的盆友你們可以試一試,其實(shí)很簡單的哇咔咔~~