<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    有關(guān)Android游戲開(kāi)發(fā)中的Sensor感應(yīng)示例今天我們將一起來(lái)討論,對(duì)于目前最新的Android 2.2平臺(tái) 而言仍然沒(méi)有具體的感應(yīng)判斷邏輯,下面我們一起定義 下常用的感應(yīng)動(dòng)作事件。首先Android123提醒大家由于是三軸的立體空間感應(yīng)所以相對(duì)于軌跡球、導(dǎo)航鍵的上下左右外,還提供了前后的感應(yīng),所以我們定義最基本的六種空間方向。

    view plaincopy to clipboardprint?
    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; //向后 
    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開(kāi)發(fā)的網(wǎng)友不會(huì)對(duì)這些陌生的,我們就把他們對(duì)應(yīng)為繞y、x、z 軸的角度好了,如果你們沒(méi)有學(xué)過(guò)3D相關(guān)的知識(shí)這里Android開(kāi)發(fā)網(wǎng)推薦大家可以通過(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 即往左邊傾斜,同理我們定義如下:

    view plaincopy to clipboardprint?
    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; 
    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è)值,今天Android123給大家一個(gè)簡(jiǎn)單示例,不考慮其他因素,在public int accuracy 、public Sensor sensor 、public long timestamp  和  public final float[] values 中,我們獲取values的浮點(diǎn)數(shù)組來(lái)判斷方向。

    view plaincopy to clipboardprint?
    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;  

          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)偏向角度問(wèn)題,我們將在下一次詳細(xì)講述,對(duì)于一般的2D游戲,我們可以參考本文來(lái)實(shí)現(xiàn)重力控制,所以總體來(lái)說(shuō)Android游戲開(kāi)發(fā)比較簡(jiǎn)單易懂,Android平臺(tái)使用的Java 語(yǔ)言還是很適合做游戲的。在邏輯表達(dá)上更清晰。

     

    本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/JavaTiger427/archive/2010/11/25/6034640.aspx



                                                                                                           --    學(xué)海無(wú)涯
            

    主站蜘蛛池模板: 亚洲日本乱码在线观看| 国产成人亚洲精品91专区高清| 亚洲 自拍 另类小说综合图区| 亚洲国产精品免费观看| 又长又大又粗又硬3p免费视频 | 亚洲国产精品嫩草影院久久| 和日本免费不卡在线v| a毛片全部播放免费视频完整18| 亚洲heyzo专区无码综合| 亚洲一级毛片免费观看| 亚洲高清国产AV拍精品青青草原| 日本免费人成在线网站| 18禁超污无遮挡无码免费网站 | 全免费一级午夜毛片| 本道天堂成在人线av无码免费| 亚洲一久久久久久久久| 亚洲福利一区二区精品秒拍| 国产91在线免费| 在线精品免费视频无码的| 97碰公开在线观看免费视频| 69精品免费视频| 99久久99久久精品免费观看 | 亚洲免费电影网站| 亚洲一本综合久久| 亚洲AV无码久久精品蜜桃| 亚洲人成在线播放网站| 亚洲熟妇无码八AV在线播放| 三上悠亚亚洲一区高清| 成人免费毛片内射美女APP| 永久免费av无码不卡在线观看| 精品无码国产污污污免费网站国产| 妇女自拍偷自拍亚洲精品| 亚洲欧洲免费无码| 亚洲视频在线不卡| 亚洲精彩视频在线观看| 亚洲成人黄色在线观看| 亚洲国产成人精品激情| 亚洲av女电影网| 久久国产亚洲精品无码| 亚洲综合网美国十次| 91天堂素人精品系列全集亚洲|