视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
unity3d游戏开发之平面小球重力感应详解
2025-09-25 23:19:13 责编:小OO
文档
 手机重力感应应该对大多数开发者并不陌生,在新一代智能手机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

1.//小球的贴图

2.var round : Texture2D;  

3.  

4.//小球在屏幕中显示的X Y坐标

5.var x = 0;

6.var y = 0;

7.  

8.//小球屏幕显示的最大 X Y 范围

9.var cross_x = 0;

10.var cross_y = 0;

11.  

12.function Start(){

13.     //初始化赋值

14.    cross_x = Screen.width -  round.width;  

15.    cross_y = Screen.height -  round.height;      

16.}

17.  

18.function OnGUI () {

19.  

20.    //整体显示 x y z 重力感应的重力分量

21.    GUI.Label(Rect(0,0,480,100),"position is " + Input.acceleration);

22.  

23.    //绘制小球

24.    GUI.DrawTexture(Rect(x,y,256,256),round);   

25.}

26.  

27.function Update(){

28.  

29.    //根据重力分量修改小球的位置这里乘以30的意思是让小球移动的快一些

30.    x += Input.acceleration.x * 30;

31.    y += -Input.acceleration.y * 30;    

32.  

33.    //避免小球超出屏幕

34.    if(x < 0){ 

35.        x = 0;  

36.    }else if(x > cross_x){ 

37.        x = cross_x;  

38.    } 

39.  

40.    if(y < 0){ 

41.        y = 0;  

42.    }else if(y > cross_y){ 

43.        y = cross_y;  

44.    } 

45.}

复制代码

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

                                

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

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

下载本文
显示全文
专题