手機重力感應應該對大多數開發者並不陌生,在新一代智慧型手機android ios wp7 很多遊戲都是使用手機自帶重力感應功能製作的,強大的unity3d 遊戲引擎當然對這個也是完美支援的,今天由momo帶大家學習3d 世界中的手機重力感應。本章我們的目標是實現乙個小球在螢幕中通過搖晃手機重力加速度讓小球在螢幕中移動。以前的android系列開發文章中貌似也寫過,其實原理都是一樣一樣一樣的,廢話不多說了。哇咔咔~~
先看一看unity3d 在iphone上的重力分布圖。如下圖所示我們可以清晰的看出x y z 三個方向的重力分量。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
ok! 有了這三組重要的數值我們就可以控制手機重力感應啦,緊接著我們看看小球重力感應的這個遊戲小例子。
開啟unity3d 我們將給攝像機繫結乙個指令碼,用來響應使用者控制手機來重力感應遊戲小球的移動。
在input 這個重要的類中,unity3d 幫我們封裝了重力加速的方法。
input.acceleration.x; 重力感應x軸的重力分量
input.acceleration.y; 重力感應y軸的重力分量
input.acceleration.z; 重力感應z軸的重力分量
new.js
c#//小球的貼圖
var round : texture2d;
//小球在螢幕中顯示的x y座標
var x = 0;
var y = 0;
//小球螢幕顯示的最大 x y 範圍
var cross_x = 0;
var cross_y = 0;
function start()else if(x > cross_x)else if(y > cross_y){
y = cross_y;
重力感應的不太好擷取,我們看看下面的示意圖,小球可以根據我的手機的重力而移動。螢幕左上方正常列印手機當前x y z 三個方向的重力分量。
說到這裡,可能會有盆友問我如何為3d的物體新增重力感應?其實方法是一樣的,因為都是一樣的道理,比如我可以給乙個模型繫結乙個這樣的指令碼,通過input.acceleration去拿到當前手機的重力感應分量,然後根據這個分量去計算當前模型的位置。細心的盆友你們可以試一試,其實很簡單的哇咔咔~~
Unity3D研究院之指令碼批量打包渠道包研究
最近在研究unity3d指令碼批量打包,比如在android平台下各種不同解析度和不同記憶體大小的機器,可能還有不同的渠道包,不同渠道可能用的sdk都不一樣,這一切的一切都表明你的 無法做到自適應的,除非批量打包提供各個平台的預定義標籤 define unity預設提供了一些預定義標籤如 unity...
Unity3D研究院之UGUI乙個優化效率小技巧
無意間發現了乙個小技巧。如下圖所示,可以發現ugui的image元件的raycasttarget勾選以後會消耗一些效率,為了節省效率就不要勾選它了,不僅image元件text元件也有這樣的問題。一般ui裡也就是按鈕才需要接收響應事件,那麼大部分image和text是是不需要開raycasttarge...
Unity3d 外掛程式研究之EasyTouch外掛程式
unity3d easytouch 初步使用教程 詳細 unity外掛程式easytouch學習記錄 unity外掛程式 easytouch5教程 unity外掛程式 easytouch的使用 第二 第三 第四 void onenable 此函式是搖桿移動中所要處理的事 void onjoystic...