新聞中心
下面我們首先來(lái)定義下常用的感應(yīng)動(dòng)作事件。這里提醒大家由于是三軸的立體空間感應(yīng)所以相對(duì)于軌跡球、導(dǎo)航鍵的上下左右外,還提供了前后的感應(yīng),所以我們定義最基本的六種空間方向。

專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)大興免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了數(shù)千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
- public static final int CWJ_UP = 0;
- public static final int CWJ_DOWN = 1;
- public static final int CWJ_LEFT = 2;
- public static final int CWJ_RIGHT = 4;
- public static final int CWJ_FORWARD = 8; //向前
- public static final int CWJ_BACKWARD = 16; //向后
下面我們做精確的角度旋轉(zhuǎn)修正值定義,我們用到y(tǒng)aw、pitch和roll,相信學(xué)過(guò)3D開發(fā)的網(wǎng)友不會(huì)對(duì)這些陌生的,我們就把他們對(duì)應(yīng)為繞y、x、z軸的角度好了,如果你們沒有學(xué)過(guò)3D相關(guān)的知識(shí)這里推薦大家可以通過(guò)Cube例子自定義Render來(lái)觀察這三個(gè)值對(duì)應(yīng)立方體的旋轉(zhuǎn)角度。
Yaw在(0,0,0)中, 以xOz的坐標(biāo)平面中圍繞y軸旋轉(zhuǎn),如果是負(fù)角則我們定義為CWJ_YAW_LEFT 即往左邊傾斜,同理我們定義如下:
- public static final int CWJ_YAW_LEFT = 0;
- public static final int CWJ_YAW_RIGHT = 1;
- public static final int CWJ_PITCH_UP = 2;
- public static final int CWJ_PITCH_DOWN = 4;
- public static final int CWJ_ROLL_LEFT = 8;
- public static final int CWJ_ROLL_RIGHT = 16;
我們通過(guò)加速感應(yīng)器可以獲得SensorEvent的四個(gè)值,下面給大家一個(gè)簡(jiǎn)單示例,不考慮其他因素,在public int accuracy 、public Sensor sensor 、public long timestamp 和public final float[] values 中,我們獲取values的浮點(diǎn)數(shù)組來(lái)判斷方向。
- int nAndroid123=CWJ_UP //向上
- float ax = values[0];
- float ay = values[1];
- float az = values[2];
- float absx = Math.abs(ax);
- float absy = Math.abs(ay);
- float absz = Math.abs(az);
- if (absx > absy && absx > absz) {
- if (ax > 0) {
- nAndroid123 = CWJ_RIGHT;
- } else {
- nAndroid123 = CWJ_LEFT;
- }
- } else if (absy > absx && absy > absz) {
- if (ay > 0) {
- nAndroid123= CWJ_FORWARD;
- } else {
- nAndroid123= CWJ_BACKWARD;
- }
- } else if (absz > absx && absz > absy) {
- if (az > 0) {
- nAndroid123 = CWJ_UP;
- } else {
- nAndroid123 = CWJ_DOWN;
- }
- } else {
- nAndroid123 = CWJ_UNKNOWN;
- }
有關(guān)偏向角度問題,我們將在下一次詳細(xì)講述,對(duì)于一般的2D游戲,我們可以參考本文來(lái)實(shí)現(xiàn)重力控制,所以總體來(lái)說(shuō)Android游戲開發(fā)比較簡(jiǎn)單易懂,Android平臺(tái)使用的Java語(yǔ)言還是很適合做游戲的。在邏輯表達(dá)上更清晰。
網(wǎng)站標(biāo)題:Android游戲開發(fā)之十三:Sensor感應(yīng)實(shí)例
轉(zhuǎn)載來(lái)源:http://www.dlmjj.cn/article/dphsdcj.html


咨詢
建站咨詢
