欢迎来到天天文库
浏览记录
ID:39891107
大小:164.50 KB
页数:5页
时间:2019-07-14
《unity3d游戏开发之平面小球重力感应详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、手机重力感应应该对大多数开发者并不陌生,在新一代智能手机android IOSWP7很多游戏都是使用手机自带重力感应功能制作的,强大的unity3D 游戏引擎当然对这个也是完美支持的,今天由MOMO带大家学习3D世界中的手机重力感应。本章我们的目标是实现一个小球在屏幕中通过摇晃手机重力加速度让小球在屏幕中移动。以前的Android系列开发文章中貌似也写过,其实原理都是一样一样一样的,废话不多说了。哇咔咔~~ 先看一看unity3d 在iPhone上的重力分布图。如下图所示我们可以清晰的看出XYZ三个方向的重力分量。Unity3D中重量的取值范围是-1.0到+1.0. 出
2、自狗刨学习网 X轴:home按键在下手机面朝天向右旋转90度重力分量为+1.0 向左旋转90度重力分量为-1.0 Y轴:home按键在上手机背朝自己重力分量为+1.0home按键在下手机面朝自己重力分量为-1.0 Z轴:手机面朝地面重力分量为+1.0手机面朝天空重力分量为-1.0 OK!有了这三组重要的数值我们就可以控制手机重力感应啦,紧接着我们看看小球重力感应的这个游戏小例子。 打开Unity3D我们将给摄像机绑定一个脚本,用来响应用户控制手机来重力感应游戏小球的移动。 在Input这个重要的类中,U
3、nity3D帮我们封装了重力加速的方法。 Input.acceleration.x;重力感应X轴的重力分量 Input.acceleration.y;重力感应Y轴的重力分量 Input.acceleration.z;重力感应Z轴的重力分量 new.js1.//小球的贴图2.varround:Texture2D; 3. 4.//小球在屏幕中显示的XY坐标5.varx=0;6.vary=0;7. 8.//小球屏幕显示的最大XY范围9.varcross_x=0;10.varcross_y=0;11. 12.functionStart(){13. //初
4、始化赋值14. cross_x=Screen.width- round.width; 15. cross_y=Screen.height- round.height; 16.}17. 18.functionOnGUI(){19. 20. //整体显示xyz重力感应的重力分量21. GUI.Label(Rect(0,0,480,100),"positionis"+Input.acceleration);22. 23. //绘制小球24. GUI.DrawTexture(Rect(x,y,256,256),round); 25.}26. 27.funct
5、ionUpdate(){28. 29. //根据重力分量修改小球的位置这里乘以30的意思是让小球移动的快一些30. x+=Input.acceleration.x*30;31. y+=-Input.acceleration.y*30; 1. 2. //避免小球超出屏幕3. if(x<0){ 4. x=0; 5. }elseif(x>cross_x){ 6. x=cross_x; 7. } 8. 9. if(y<0){ 10. y=0; 11. }elseif(y>cross_y){ 12. y=cross_y;
6、 13. } 14.}复制代码 重力感应的图片不太好截取,我们看看下面的示意图,小球可以根据我的手机的重力而移动。屏幕左上方正常打印手机当前XYZ三个方向的重力分量。 说到这里,可能会有盆友问我如何为3D的物体添加重力感应?其实方法是一样的,因为都是一样的道理,比如我可以给一个模型绑定一个这样的脚本,通过Input.acceleration去拿到当前手机的重力感应分量,然后根据这个分量去计算当前模型的位置。细心的盆友你们可以试一试,其实很简单的哇咔咔~~ 最后欢迎各位盆友可以和MOMO一起讨论unity3d游戏
7、开发,总的来说这一章还是比较简单的,哇咔咔~~~附上Unity3D工程的下载地址,Xcode项目我就不上传了,须要的自己导出。
此文档下载收益归作者所有