Android—-動作感應技術,遊戲編程 3D編碼

來源:互聯網
上載者:User

   我們為什麼要實現動作的感應效果那,這個主要是用再了android的遊戲裡,有了這個效果,就會讓我們的玩家的視覺感非常的好。那我們就快來看看是怎麼實現android動作感應的吧。

                1.發現Android提供了SensorListener介面

                2.要使用還得有個動作感應管理器SensorManager

Java代碼:

  1. //取得SensorManager
  2. SensorManager sensorMgr = (SensorManager)getSystemService(SENSOR_SERVICE);

                3.註冊我們獲得的SensorManager

Java代碼:

  1. //返回true表示註冊成功,flase則反之
  2. sensorMgr.registerListene(this,SensorManager.SENSOR_ACCELEROMETER,SensorManager.SENSOR_DELAY_GAME);

                如果註冊SensorManager不成功就調用

Java代碼:

  1. sensorMgr.unregisterListener(this,SensorManager.SENSOR_ACCELEROMETER);

                4.SensorListener必須實現兩個方法

Java代碼:

  1. public void onAccuracyChanged(int arg0, int arg1) {}
  2. public void onSensorChanged(int sensor, float[] values) {}

                 5.自己定義一個3D的座標

Java代碼:

  1. class Pos3D
  2. {
  3. float x;
  4. float y;
  5. float z;
  6. }
  7. Pos3D cur,last;

                在方法onSensorChanged中這樣課可以獲得資料

Java代碼:

  1. cur.x = values[SensorManager.DATA_X];
  2. cur.y = values[SensorManager.DATA_Y];
  3. cur.z = values[SensorManager.DATA_Z];
  4. float speed = Math.abs((cur.x+cur.y+cur.z)-(last.x+last.y+last.z))/ 間隔的時間

                下面就是判斷這個speed大於自己定義的一個數值時,進行處理

Java代碼:

  1. if(speed > 1000)
  2. {
  3. //這裡來進行處理
  4. }

                 就這樣最基本的實現了動作感應,但是大家肯定能感覺得到這個方法的不足之處

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.