gamemaker工作室吧 关注:16贴子:130
  • 3回复贴,共1

GMS 需要的两个新增加手机功能代码

只看楼主收藏回复

一个是重力感应 device_get_weight()
另一个就是震动 device_get_shake()
上面两个代码手机功能很有用,增加游戏的乐趣。


1楼2014-02-06 17:49回复
    重力感要 先获得SensorEventListener 这个接口,
    用 onSensorChanged(SensorEvent event) 方法来捕获手机传感器的状态,得到手机 X轴Y轴Z轴三个方向的重力分量,代码如下:
    public void onSensorChanged(SensorEvent e) {
    float x = e.values[SensorManager.DATA_X];
    float y = e.values[SensorManager.DATA_Y];
    float z = e.values[SensorManager.DATA_Z];
    }
    上例代码中 float x y z 3个方向的取值范围是在 -10 到 10 之间,
    手机屏幕向左侧方当X轴就朝向天空,垂直放置 这时候 Y 轴 与 Z轴没有重力分量,因为X轴朝向天空所以它的重力分量则最大 。这时候X轴 Y轴 Z轴的重力分量的值分别为(10,0,0)
    手机屏幕向右侧方当X轴就朝向地面,垂直放置 这时候 Y 轴 与 Z轴没有重力分量,因为X轴朝向地面所以它的重力分量则最小 。这时候X轴 Y轴 Z轴的重力分量的值分别为(-10,0,0)
    手机屏幕垂直竖立放置方当Y轴就朝向天空,垂直放置 这时候 X 轴 与 Z轴没有重力分量,因为Y轴朝向天空所以它的重力分量则最大 。这时候X轴 Y轴 Z轴的重力分量的值分别为(0,10,0)
    手机屏幕垂直竖立放置方当Y轴就朝向地面,垂直放置 这时候 X 轴 与 Z轴没有重力分量,因为Y轴朝向地面所以它的重力分量则最小 。这时候X轴 Y轴 Z轴的重力分量的值分别为(0,-10,0)
    手机屏幕向上当Z轴就朝向天空,水平放置 这时候 X 轴与Y轴没有重力分量,因为Z轴朝向天空所以它的重力分量则最大 。这时候X轴 Y轴 Z轴的重力分量的值分别为(0,0,10)
    手机屏幕向上当Z轴就朝向地面,水平放置 这时候 X 轴与Y轴没有重力分量,因为Z轴朝向地面所以它的重力分量则最小 。这时候X轴 Y轴 Z轴的重力分量的值分别为(0,0,-10)


    2楼2014-02-06 23:33
    回复
      2026-01-16 07:39:38
      广告
      不感兴趣
      开通SVIP免广告
      使用SensorMannager 调用getDefaultSensor(Sensor.TYPE_ACCELEROMETER)方法,
      拿到加速重力感应的Sensor对象。
      重力加速度传感器参数为Sensor.TYPE_ACCELEROMETER,使用SensorMannager调用registerListener()方法来注册,第三个参数是检测的灵敏精确度根据不同的需求来选择精准度。
      游戏开发建议使用 SensorManager.SENSOR_DELAY_GAME
      重力感应简单速度计算的方式。 每次摇晃手机计算出 X轴 Y轴 Z轴的重力分量可以将它们记录下来 然后每次摇晃的重力分量和之前的重力分量可以做一个对比 利用差值和时间就可以计算出他们的移动速度。


      3楼2014-02-06 23:41
      回复
        这两个功能没有啊,而且yoyogame也不准备更新这方面了


        IP属地:北京4楼2014-02-09 09:13
        回复