先看一看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)是實現(xiàn)一個小球在屏幕中通過搖晃手機(jī)重力加速度讓小球在屏幕中移動。以前的Android系列開發(fā)文章中貌似也寫過,其實原理都是一樣一樣一樣的,廢話不多說了。哇咔咔~~
先看一看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)?其實方法是一樣的,因為都是一樣的道理,比如我可以給一個模型綁定一個這樣的腳本,通過 Input.acceleration去拿到當(dāng)前手機(jī)的重力感應(yīng)分量,然后根據(jù)這個分量去計算當(dāng)前模型的位置。細(xì)心的盆友你們可以試一試,其實很簡單的哇咔咔~~