下面我们首先来定义下常用的感应动作事件。这里提醒大家由于是三轴的立体空间感应所以相对于轨迹球、导航键的上下左右外,还提供了前后的感应,所以我们定义最基本的六种空间方向。
专注于为中小企业提供成都做网站、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业大兴免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了数千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
- 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; //向后
下面我们做精确的角度旋转修正值定义,我们用到yaw、pitch和roll,相信学过3D开发的网友不会对这些陌生的,我们就把他们对应为绕y、x、z轴的角度好了,如果你们没有学过3D相关的知识这里推荐大家可以通过Cube例子自定义Render来观察这三个值对应立方体的旋转角度。
Yaw在(0,0,0)中, 以xOz的坐标平面中围绕y轴旋转,如果是负角则我们定义为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;
我们通过加速感应器可以获得SensorEvent的四个值,下面给大家一个简单示例,不考虑其他因素,在public int accuracy 、public Sensor sensor 、public long timestamp 和public final float[] values 中,我们获取values的浮点数组来判断方向。
- 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;
- }
有关偏向角度问题,我们将在下一次详细讲述,对于一般的2D游戏,我们可以参考本文来实现重力控制,所以总体来说Android游戏开发比较简单易懂,Android平台使用的Java语言还是很适合做游戏的。在逻辑表达上更清晰。
网站栏目:Android游戏开发之十三:Sensor感应实例
文章路径:http://www.shufengxianlan.com/qtweb/news11/407161.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联