http://blog.csdn.net/xys289187120/article/details/6969333     

 手机重力感应应该对大多数开发者并不陌生,在新一代智能手机Android  IOS WP7 很多游戏都是使用手机自带重力感应功能制作的,强大的Unity3D 游戏引擎当然对这个也是完美支持的,今天由MOMO带大家学习3D 世界中的手机重力感应。本章我们的目标是实现一个小球在屏幕中通过摇晃手机重力加速度让小球在屏幕中移动。以前的Android系列开发文章中貌似也写过,其实原理都是一样一样一样的,废话不多说了。哇咔咔~~

 

 

先看一看Unity3D 在iPhone上的重力分布图。如下图所示我们可以清晰的看出X Y Z 三个方向的重力分量。Unity3D中重量的取值范围是 -1.0 到 +1.0.

 

X轴:home按键在下手机面朝天向右旋转90度重力分量为+1.0  向左旋转90度重力分量为-1.0

Y轴:home按键在上手机背朝自己重力分量为+1.0 home按键在下手机面朝自己重力分量为-1.0

Z轴:手机面朝地面重力分量为+1.0 手机面朝天空重力分量为-1.0

 

OK! 有了这三组重要的数值我们就可以控制手机重力感应啦,紧接着我们看看小球重力感应的这个游戏小例子。

 

 

 

 


 

 

 

打开Unity3D 我们将给摄像机绑定一个脚本,用来响应用户控制手机来重力感应游戏小球的移动。

在Input 这个重要的类中,Unity3D 帮我们封装了重力加速的方法。

 

Input.acceleration.x; 重力感应X轴的重力分量

Input.acceleration.y; 重力感应Y轴的重力分量

Input.acceleration.z; 重力感应Z轴的重力分量

 

 

 

new.js

 

[javascript] view plaincopy
  1. //小球的贴图
  2. var round : Texture2D;
  3. //小球在屏幕中显示的X Y坐标
  4. var x = 0;
  5. var y = 0;
  6. //小球屏幕显示的最大 X Y 范围
  7. var cross_x = 0;
  8. var cross_y = 0;
  9. function Start(){
  10. //初始化赋值
  11. cross_x = Screen.width -  round.width;
  12. cross_y = Screen.height -  round.height;
  13. }
  14. function OnGUI () {
  15. //整体显示 x y z 重力感应的重力分量
  16. GUI.Label(Rect(0,0,480,100),"position is " + Input.acceleration);
  17. //绘制小球
  18. GUI.DrawTexture(Rect(x,y,256,256),round);
  19. }
  20. function Update(){
  21. //根据重力分量修改小球的位置这里乘以30的意思是让小球移动的快一些
  22. x += Input.acceleration.x * 30;
  23. y += -Input.acceleration.y * 30;
  24. //避免小球超出屏幕
  25. if(x < 0){
  26. x = 0;
  27. }else if(x > cross_x){
  28. x = cross_x;
  29. }
  30. if(y < 0){
  31. y = 0;
  32. }else if(y > cross_y){
  33. y = cross_y;
  34. }
  35. }

 

重力感应的图片不太好截取,我们看看下面的示意图,小球可以根据我的手机的重力而移动。屏幕左上方正常打印手机当前X Y Z 三个方向的重力分量。

 

 


 

说到这里,可能会有盆友问我如何为3D的物体添加重力感应?其实方法是一样的,因为都是一样的道理,比如我可以给一个模型绑定一个这样的脚本,通过Input.acceleration去拿到当前手机的重力感应分量,然后根据这个分量去计算当前模型的位置。细心的盆友你们可以试一试,其实很简单的哇咔咔~~

 

 

最后欢迎各位盆友可以和MOMO一起讨论Unity3D游戏开发,总的来说这一章还是比较简单的,哇咔咔~~~ 附上Unity3D工程的下载地址,Xcode项目我就不上传了,须要的自己导出。

下载地址:http://www.xuanyusong.com/archives/537

 

转载于:https://www.cnblogs.com/songtzu/archive/2013/04/09/3009547.html

Unity3D 游戏引擎之平面小球重力感应详解【转】相关推荐

  1. Unity3D 游戏引擎之构建简单的游戏世界(三)

    Unity3D 游戏引擎之构建简单的游戏世界 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archi ...

  2. unity3d 剧情制作_游戏设计作品集干货:跨专业如何入门 Unity3D 游戏引擎?

    游戏设计作品集,涉及游戏策划与玩法.游戏美术与Unity3D游戏引擎等内容的学习. 之前克瑞斯介绍过了游戏策划与游戏美术,本期再详细聊下什么是Unity3D游戏引擎,以及学习Unity3D游戏引擎的详 ...

  3. Unity3D 游戏引擎之脚本实现模型的平移与旋转(六)

    Unity3D 游戏引擎之脚本实现模型的平移与旋转 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/ar ...

  4. Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(九)

    Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收 雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289 ...

  5. Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放(十二)

    Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong. ...

  6. 我们月光工作室和我们的3款游戏被国内Unity3D游戏引擎第一技术论坛--“游戏蛮牛” 报道啦!...

    注明:目前月光工作室已经停止更新,因为创业伙伴回国,小编自己忙于<程序员联盟>社区的各样事务.以后也许会重拾App开发吧.谨以此文纪念那段美好的时光!以下的某些链接也已失效. 我们月光工作 ...

  7. Unity3D 游戏引擎之IOS自定义游戏摇杆与飞机平滑的移动(十一)

    Unity3D 游戏引擎之IOS自定义游戏摇杆与飞机平滑的移动 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong. ...

  8. Unity3D 游戏引擎之Unity3D回馈IOS高级界面消息 (十)

    Unity3D 游戏引擎之Unity3D回馈IOS高级界面消息 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong. ...

  9. Unity3D游戏引擎之构建游戏框架与导出IOS项目(一)

    Unity3D游戏引擎之构建游戏框架与导出IOS项目 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/a ...

最新文章

  1. Springboot的部分依赖及作用
  2. mysql load报错_mysql:执行LOAD DATA LOCAL 报错
  3. 在 2016 年学 JavaScript 是一种什么样的体验?
  4. 通过severlet获取请求头信息
  5. Hibernate面试题
  6. SpringMVC文件上传下载和拦截器
  7. SSH远程登录失败,提示“Password authentication failed”
  8. 信息学奥赛C++语言:滔滔吃苹果
  9. springboot定时发送短信_阿里大于可以发送定时短信
  10. 静态RAM(1K X 4位)2114原理介绍(抄原理图)
  11. PG Vs MySQL ,到底谁更强?
  12. 【C++】 ArcFace Demo2.0版
  13. 谈谈在深圳挤公交那些事
  14. 新趋势下的云计算安全行业前沿认证|CCSK
  15. 微服务入门到入土(08)-消息队列RabbitMQ
  16. osgearth各版本源码下载
  17. opencv-python学习笔记-2对比度增强——研0基础学习
  18. 最后剩下的,只有随遇而安,偶尔我会想起你:伤感日志
  19. 8000 sentences of Oral English(one)
  20. 使用docker安装mysql5.7

热门文章

  1. Unity MMORPG游戏优化经验分享
  2. 白鹭引擎助力《迷你世界》研发团队开发3D小游戏版
  3. pmp每日三题(2022年2月24日)
  4. 常见java面试题 普通类和抽象类的区别?
  5. VMware Workstation Pro通过ISO系统镜像安装ubuntu-18.04.2
  6. scrapy之settings参数
  7. angularjs的一点总结
  8. java基础之访问控制符
  9. VC++实现获取DNS服务器
  10. 开始计算机USB存储功能,USB存储设备禁用怎么设置