网站大量收购独家精品文档,联系QQ:2885784924

unity3d游戏开发之平面小球重力感应详解.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
unity3d游戏开发之平面小球重力感应详解unity3d游戏开发之平面小球重力感应详解.doc

?手机重力感应应该对大多数开发者并不陌生,在新一代智能手机android??IOS WP7 很多游戏都是使用手机自带重力感应功能制作的,强大的unity3D?游戏引擎当然对这个也是完美支持的,今天由MOMO带大家学习3D 世界中的手机重力感应。本章我们的目标是实现一个小球在屏幕中通过摇晃手机重力加速度让小球在屏幕中移动。以前的Android系列开发文章中貌似也写过,其实原理都是一样一样一样的,废话不多说了。哇咔咔~~ ? ?? ? 先看一看unity3d?在iPhone上的重力分布图。如下图所示我们可以清晰的看出X Y Z 三个方向的重力分量。Unity3D中重量的取值范围是 -1.0 到 +1.0.? ?? ? HYPERLINK / \t /_blank 出自狗刨学习网 ? ?? ? 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 //小球的贴图 var round : Texture2D;?? ?? //小球在屏幕中显示的X Y坐标 var x = 0; var y = 0; ?? //小球屏幕显示的最大 X Y 范围 var cross_x = 0; var cross_y = 0; ?? function Start(){ ? ???//初始化赋值 ? ? cross_x = Screen.width -??round.width;?? ? ? cross_y = Screen.height -??round.height;? ?? ? } ?? function OnGUI () { ?? ? ? //整体显示 x y z 重力感应的重力分量 ? ? GUI.Label(Rect(0,0,480,100),position is + Input.acceleration); ?? ? ? //绘制小球 ? ? GUI.DrawTexture(Rect(x,y,256,256),round);? ? } ?? function Update(){ ?? ? ? //根据重力分量修改小球的位置这里乘以30的意思是让小球移动的快一些 ? ? x += Input.acceleration.x * 30; ? ? y += -Input.acceleration.y * 30;? ?? ?? ? ? //避免小球超出屏幕 ? ? if(x 0){? ? ?? ???x = 0;?? ? ? }else if(x cross_x){? ? ?? ???x = cross_x;?? ? ? }? ?? ? ? if(y 0){? ? ?? ???y = 0;?? ? ? }else if(y cross_y){? ? ?? ???y = cross_y;?? ? ? }? } 复制代码 ? ?? ? 重力感应的图片不太好截取,我们看看下面的示意图,小球可以根据我的手机的重力而移动。屏幕左上方正常打印手机当前X Y Z 三个方向的重力分量。 ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??? ? ?? ???说到这里,可能会有盆友问我如何为3D的物体添加重力感应?其实方法是一样的,因为都是一样的道理,比如我可以给一个模型绑定一个这样的脚本,通过Input.acceleration去拿到当前手机的重力感应分量,然后根据这个分量去计算当前模型的位置。细心的盆友你们可以试一试,其实很简单的哇咔咔~~ ? ?? ???最后欢迎各位盆友可以和MOMO一起讨论unity3d游戏开发,总的来说这一章还??比较简单的,哇咔咔~~~ 附上Unity3D工程的下载地址,Xcode项目我就不上传了

文档评论(0)

ganqludp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档