李华明Himi原创,转载务必在明显处注明:
转载自
【黑米GameDev街区】原文链接:
http://www.himigame.com/android-game/344.html
很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块;请点击下面联系进入阅读:
【Android游戏开发十九】(必看篇)SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!
前两篇都是向大家介绍了很有意思的两种手势操作,嵌入我们游戏中,不得不说让游戏的自由度、可玩性和趣味性都增色不少!那么今天继续给大家介绍一亮点!传感器!
一:什么是传感器:
所谓传感器能够探测如光、热、温度、重力、方向 等等的功能!
二:Android中提供传感器有哪些:
1. 加速度传感器(重力传感器)
2.陀螺仪传感器
3.光传感器
5. 恒定磁场传感器
6. 方向传感器
7. 恒定的压力传感器
8. 接近传感器
9. 温度传感器
今天我们给大家介绍的是游戏开发中最最常见的,用到的频率最高的一种传感器,加速度传感器(重力传感器)!
因为模拟器无法测试,所以我用手机调试的~,先上两张截图;
备注1:
SensorEventListener的onSensorChanged事件将返回SensorEvent对象,包含Sensor的最新数据,通过event.values获得一个float[]数组!对于不同的传感器类型,其数组包含的元素个数是不同的,重力传感器总是返回一个长度为3的数组,分别代表X、Y和Z方向的数值。Z轴表示了手机是屏幕朝上还是屏幕朝下;
这里还要注意你当前手机处于 纵向, 还是横向,因为这个会影响我们的X,Y表示的意思!
如果当前手机是纵向屏幕:
x>0 说明当前手机左翻 x<0右翻
y>0 说明当前手机下翻 y<0上翻
如果当前手机是横向屏幕:
x>0 说明当前手机下翻 x<0上翻
y>0 说明当前手机右翻 y<0左翻
我要提醒各位童鞋:
1.要考虑玩家当前拿手机的姿势,例如竖屏,横屏
2.根据横竖屏幕的不同,虽然屏幕坐标系会自动改变,但是传感器的值不会自动改变坐标系!所以为什么会横屏竖屏改变的时候我们从传感器中取出的值表示的动作不一样的原因!!!因此大家游戏开发的时候对于人物移动、图片移动等等操作的时候,手势X,Y的正负值代表什么一定要想清楚!否则玩家会玩着玩着吐的 (太晕了!)- -、
备注2 :
这里本应该arc_x+=x;但是因为当前我屏幕是纵向!造成x>0的手势表示玩家将手机左翻了,但是我们屏幕的圆形应该根据人的反转相对应的移动,那么这里玩家将手机左翻,我们就应该让原型的X坐标减少!所以这里写成了arc_x-=x;!
总结一下: 对于传感器的虽然本章只是讲了一个重力传感器,但是一个足够了,因为如果你想使用其他的传感器,那么你只要以下步骤就OK:
1. 利用SensorManager.getDefaultSensor();传入一个你想要的传感器的参数得到其实例!
2.注册!
3.在监听器里处理事件!
OK!就是这么简单、
源码下载地址:http://www.himigame.com/android-game/344.html
分享到:
相关推荐
【Android游戏开发十八】解放手指,利用传感器开发游戏!(本文讲解在SurfaceView中用重力传感器控制圆球的.pdf
android之surfaceview游戏开发
Android游戏开发二 View和SurfaceView Android游戏开发三 View类详解 Android游戏开发四 Canvas和Paint实例 Android游戏开发五Path和Typeface Android游戏开发六 自定义View Android游戏开发七 自定义SurfaceView ...
import android.app.Service; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; import android....
Android游戏框架SurfaceView介绍 PDF TAG:Android 游戏框架 SurfaceView
SurfaceView游戏框架实例,讲解如何使用,如何掌握基础性东西
Android123做的一个关于Android游戏开发的教程 1.Android游戏开发之旅一 长按Button原理 2.Android游戏开发之旅二 View和SurfaceView 3.Android游戏开发之旅三 View类详解 4.Android游戏开发之旅四 Canvas和...
该资源是一个完整的android项目,主要是利用surfaceview和android的重力传感器实现自由落体的模拟,包括碰撞和瞬间改变重力加速度的方向等。该案例是我模拟物理引擎的一个例子,主要是参照“动量守恒定律”和“动能...
public class MySurfaceView extends SurfaceView implements Callback, Runnable { private Thread th = new Thread(this); private SurfaceHolder sfh; private Canvas canvas; private Paint paint; private...
5.1 Android游戏开发框架 5.1.1 View类开发框架 5.1.2 SurfaceView类开发框架 5.2 Graphics类开发 5.5.1 Paint和Color类介绍 5.2.2 Canvas类介绍 5.2.3 几何图形绘制 5.2.4 字符串绘制 5.2.5 图像绘制 5.2.6 图像...
Android游戏开发, SurfaceView!
这是在上网收集的,能够截取当前Activity中surfaceView中图片。本人亲测可以通过。
Android中使用surfaceview开发的Camera相机,内容含有注释,非常清楚
我们可以把每一个树桩, 小猪, 车厢都看成是一个 Drawable, 这个 Drawable 里面保存了 x, y 坐标, 我们的 SurfaceView 在 draw 的时候, 就把这些 Drawable draw 出来.
android使用双缓冲辨析及surfaceview使用例子
android-SurfaceView 游戏测试Demo
android中的surfaceview示例源码下载,Android SurfaceView在游戏开发中使用想当广泛,SurfaceView对于画面的控制有着更大的自由度,它不像View那样要用handler来更新,但是网上关于 SurfaceView使用这方面的参考...
NULL 博文链接:https://daikainan.iteye.com/blog/1406990
Step2:在界面布局文件中定义SurfaceView控件,或在程序中创建SurfaceView控件,并为SurfaceView的SurfaceHolder添加Callback监听器; Step3:调用MediaPlayer对象的setDisney(SurfaceHolder sh)方法将所播放的视频...
android之surfaceview学习示例