手機(jī)重力感應(yīng)應(yīng)該對(duì)大多數(shù)開發(fā)者并不陌生,在新一代智能手機(jī)Android IOS WP7 很多游戲都是使用手機(jī)自帶重力感應(yīng)功能制作的,強(qiáng)大的Unity3D 游戲引擎當(dāng)然對(duì)這個(gè)也是***支持的,今天由MOMO帶大家學(xué)習(xí)3D 世界中的手機(jī)重力感應(yīng)。本章我們的目標(biāo)是實(shí)現(xiàn)一個(gè)小球在屏幕中通過(guò)搖晃手機(jī)重力加速度讓小球在屏幕中移動(dòng)。以前的Android系列開發(fā)文章中貌似也寫過(guò),其實(shí)原理都是一樣一樣一樣的,廢話不多說(shuō)了。哇咔咔~~

成都創(chuàng)新互聯(lián)公司云計(jì)算的互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)13年的服務(wù)器租用、內(nèi)江服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn),已先后獲得國(guó)家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)許可證。專業(yè)提供云主機(jī)、虛擬主機(jī)、主機(jī)域名、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
先看一看Unity3D 在iPhone上的重力分布圖。如下圖所示我們可以清晰的看出X Y Z 三個(gè)方向的重力分量。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)的這個(gè)游戲小例子。
打開Unity3D 我們將給攝像機(jī)綁定一個(gè)腳本,用來(lái)響應(yīng)用戶控制手機(jī)來(lái)重力感應(yīng)游戲小球的移動(dòng)。
在Input 這個(gè)重要的類中,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的意思是讓小球移動(dòng)的快一些 |
| 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ī)的重力而移動(dòng)。屏幕左上方正常打印手機(jī)當(dāng)前X Y Z 三個(gè)方向的重力分量。
說(shuō)到這里,可能會(huì)有盆友問(wèn)我如何為3D的物體添加重力感應(yīng)?其實(shí)方法是一樣的,因?yàn)槎际且粯拥牡览?,比如我可以給一個(gè)模型綁定一個(gè)這樣的腳本,通過(guò) Input.acceleration去拿到當(dāng)前手機(jī)的重力感應(yīng)分量,然后根據(jù)這個(gè)分量去計(jì)算當(dāng)前模型的位置。細(xì)心的盆友你們可以試一試,其實(shí)很簡(jiǎn)單的哇咔咔~~
網(wǎng)頁(yè)標(biāo)題:Unity3D游戲引擎之平面小球重力感應(yīng)詳解
轉(zhuǎn)載來(lái)源:
http://www.dlmjj.cn/article/djgoedc.html