自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Unity3D 游戲引擎之平面小球重力感應(yīng)詳解

移動開發(fā) iOS 游戲開發(fā)
先看一看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代碼:

01 //小球的貼圖 
02 var round : Texture2D;   
03    
04 //小球在屏幕中顯示的X Y坐標(biāo) 
05 var x = 0; 
06 var y = 0; 
07    
08 //小球屏幕顯示的*** X Y 范圍 
09 var cross_x = 0; 
10 var cross_y = 0; 
11    
12    
13 function Start(){ 
14     //初始化賦值 
15     cross_x = Screen.width -  round.width;   
16     cross_y = Screen.height -  round.height;     
17
18    
19 function OnGUI () { 
20    
21     //整體顯示 x y z 重力感應(yīng)的重力分量 
22     GUI.Label(Rect(0,0,480,100),"position is " + Input.acceleration); 
23        
24     //繪制小球 
25     GUI.DrawTexture(Rect(x,y,256,256),round);    
26
27    
28 function Update(){ 
29        
30     //根據(jù)重力分量修改小球的位置這里乘以30的意思是讓小球移動的快一些 
31     x += Input.acceleration.x * 30; 
32     y += -Input.acceleration.y * 30;     
33        
34        
35     //避免小球超出屏幕 
36     if(x < 0){   
37         x = 0;   
38     }else if(x > cross_x){   
39         x = cross_x;   
40     }   
41          
42     if(y < 0){   
43         y = 0;   
44     }else if(y > cross_y){   
45         y = cross_y;   
46     }   
47 }

重力感應(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í)很簡單的哇咔咔~~

責(zé)任編輯:冰凝兒
相關(guān)推薦

2012-12-24 08:45:19

iOSUnity3D

2012-12-24 09:04:04

iOSUnity3D

2012-12-24 08:46:50

iOSUnity3D

2012-12-24 09:06:14

iOSUnity3D

2012-12-24 08:57:35

iOSUnity3D

2012-12-24 08:48:25

iOSUnity3D

2012-12-24 09:07:09

iOSUnity3D

2012-12-24 08:40:12

2012-12-24 08:50:21

iOSUnity3D

2012-12-24 08:52:44

iOSUnity3D

2012-12-24 08:51:23

iOSUnity3D

2012-12-24 08:56:15

iOSUnity3D

2012-12-24 09:11:58

iOSUnity3D

2013-05-21 11:24:07

Android游戲開發(fā)Sensor重力感應(yīng)

2012-12-24 08:59:13

iOSUnity3D

2012-12-24 09:00:31

iOSUnity3D

2012-12-24 09:02:48

iOSUnity3D

2012-12-24 08:54:47

iOSUnity3D

2013-04-25 09:56:24

unity3D手機(jī)游戲引擎

2012-12-24 09:17:12

iOSUnity3D
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號