Unity3D 游戏引擎之平面小球重力感应详解(十三)
来源:互联网 发布:6u的网络机柜价格 编辑:程序博客网 时间:2024/06/05 02:11
Unity3D 游戏引擎之平面小球重力感应详解
雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/537
手机重力感应应该对大多数开发者并不陌生,在新一代智能手机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
//小球的贴图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项目我就不上传了,须要的自己导出。
下载地址:http://www.xuanyusong.com/archives/537
- Unity3D 游戏引擎之平面小球重力感应详解(十三)
- Unity3D之平面小球重力感应详解
- Android游戏开发之小球重力感应实现
- Android游戏开发之小球重力感应实现
- Android游戏开发之小球重力感应实现
- Android游戏开发之小球重力感应实现
- Android游戏开发之小球重力感应实现(二十五)
- (转)Android游戏开发之小球重力感应实现(二十五)
- Unity3D学习笔记——Android重力感应控制小球
- Unity3D学习笔记——Android重力感应控制小球
- Unity3D 游戏引擎之实现平面多点触摸(二)
- Unity3D 游戏引擎之实现平面多点触摸(二)
- Unity3D 游戏引擎之实现平面多点触摸(二)
- Android开发学习之UnIty3D重力感应
- android 重力感应小球 Demo
- Android 小球重力感应实现
- Android 小球重力感应实现
- android 重力感应小球 Demo
- 自定义标签实现Switch 20111114
- Java WEB开发--国际化
- 如何在cpanel上建立自己的网站之:mysql数据库的设置
- ListView嵌套在TabActivity里数据不更新解决办法
- [X86] 关于/usr下的ccs,df,sfw,ucb,openwin,xpg4,xpg6的含义
- Unity3D 游戏引擎之平面小球重力感应详解(十三)
- 利用油槽实现进程之间的通信
- CSS兼容的一些解决方法
- c# 委托的用法
- Jetty(6.1.3版本)-轻量级的web容器
- Spring3之 IoC容器的实例化
- MSCRM2011 通过JS脚本操作ribbon按钮(显示隐藏、是否可用等)
- 单元测试
- Maven的基本原理和Maven2的新特性