CG游麟网官方站
查看: 4120|回复: 23

如何根据小球的重力效果计算模型的位置

[复制链接]

9

主题

9

帖子

47

积分

初入江湖

Rank: 1

麒麟币
38
任务币
0
威望
0
贡献
0
主题
9
在线时间
3 小时
发表于 2015-9-10 14:37:23 | 显示全部楼层 |阅读模式
手机重力感应应该对大多数开发者并不陌生,在新一代智能手机Android IOS WP7 很多游戏都是使用手机自带重力感应功能制作的,强大的Unity3D游戏 引擎当然对这个也是完美支持的,今天由丝路游戏小编带大家学习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! 有了这三组重要的数值我们就可以控制手机重力感应啦,紧接着我们看看小球重力感应的这个游戏小例子。
0.jpg 打开Unity3D 我们将给摄像机绑定一个脚本,用来响应用户控制手机来重力感应游戏小球的移动。
在Input 这个重要的类中,Unity3D 帮我们封装了重力加速的方法。
Input.acceleration.x; 重力感应X轴的重力分量
Input.acceleration.y; 重力感应Y轴的重力分量
Input.acceleration.z; 重力感应Z轴的重力分量
new.js
[代码]js代码:
01//小球的贴图
02var round : Texture2D;
03
04//小球在屏幕中显示的X Y坐标
05var x = 0;
06var y = 0;
07
08//小球屏幕显示的最大 X Y 范围
09var cross_x = 0;
10var cross_y = 0;
11
12
13function Start(){
14 //初始化赋值
15 cross_x = Screen.width - round.width;
16 cross_y = Screen.height - round.height;
17}
18
19function OnGUI () {
20
21 //整体显示 x y z 重力感应的重力分量
22 GUI.Label(Rect(0,0,480,100),"position is " + Input.acceleration);
23
24 //绘制小球
25 GUI.DrawTexture(Rect(x,y,256,256),round);
26}
27
28function Update(){
29
30 //根据重力分量修改小球的位置这里乘以30的意思是让小球移动的快一些
31 x += Input.acceleration.x * 30;
32 y += -Input.acceleration.y * 30;
33
34
35 //避免小球超出屏幕
36 if(x < 0){
37 x = 0;
38 }else if(x > cross_x){
39 x = cross_x;
40 }
41
42 if(y < 0){
43 y = 0;
44 }else if(y > cross_y){
45 y = cross_y;
46 }
47}
重力感应的图片不太好截取,我们看看下面的示意图,小球可以根据我的手机的重力而移动。屏幕左上方正常打印手机当前X Y Z 三个方向的重力分量。
1.jpg 说到这里,可能会有盆友问我如何为3D的物体添加重力感应?其实方法是一样的,因为都是一样的道理,比如我可以给一个模型绑定一个这样的脚本,通过 Input.acceleration去拿到当前手机的重力感应分量,然后根据这个分量去计算当前模型的位置。
源自:
Unity3D引擎:平面小球重力感应分析

楼主热帖
回复

使用道具 举报

0

主题

395

帖子

8426

积分

名下无虚

Rank: 10Rank: 10Rank: 10

麒麟币
8025
任务币
0
威望
0
贡献
0
主题
0
在线时间
133 小时

最佳新人忠实会员

发表于 2015-9-10 18:18:30 | 显示全部楼层
我一直默默的支持楼主
回复 支持 反对

使用道具 举报

2

主题

2215

帖子

2327

积分

名动江湖

Rank: 6Rank: 6

麒麟币
63
任务币
100
威望
1
贡献
78
主题
2
在线时间
186 小时

忠实会员最佳新人

发表于 2015-9-10 22:13:05 | 显示全部楼层
我一直默默的支持楼主
回复 支持 反对

使用道具 举报

0

主题

1350

帖子

6007

积分

四方传颂

Rank: 9Rank: 9Rank: 9

麒麟币
4646
任务币
0
威望
0
贡献
0
主题
0
在线时间
181 小时

最佳新人忠实会员

发表于 2015-9-10 23:15:04 | 显示全部楼层
我一直默默的支持楼主
回复 支持 反对

使用道具 举报

0

主题

735

帖子

1万

积分

名扬四海

Rank: 11Rank: 11Rank: 11Rank: 11

麒麟币
11095
任务币
0
威望
0
贡献
0
主题
0
在线时间
414 小时
发表于 2015-9-11 08:58:40 | 显示全部楼层
真的非常棒!
回复 支持 反对

使用道具 举报

0

主题

4493

帖子

4934

积分

誉满一方

Rank: 8Rank: 8

麒麟币
388
任务币
170
威望
0
贡献
0
主题
0
在线时间
876 小时
发表于 2015-9-11 09:00:49 | 显示全部楼层
我一直默默的支持楼主
回复 支持 反对

使用道具 举报

0

主题

420

帖子

4001

积分

大名鼎鼎

Rank: 7Rank: 7Rank: 7

麒麟币
3565
任务币
220
威望
0
贡献
0
主题
0
在线时间
123 小时
发表于 2015-9-11 09:07:09 | 显示全部楼层
真的非常棒!
回复 支持 反对

使用道具 举报

3

主题

1104

帖子

9601

积分

名下无虚

Rank: 10Rank: 10Rank: 10

麒麟币
8495
任务币
220
威望
0
贡献
5
主题
3
在线时间
234 小时

最佳新人忠实会员论坛元老

发表于 2015-9-11 09:20:47 | 显示全部楼层
这个太牛了,也太深了
回复 支持 反对

使用道具 举报

24

主题

831

帖子

2万

积分

万众敬仰

Rank: 14Rank: 14Rank: 14Rank: 14

麒麟币
20544
任务币
100
威望
0
贡献
0
主题
24
在线时间
343 小时

最佳新人

发表于 2015-9-11 09:22:27 | 显示全部楼层
非常崇拜楼主,真想以身相许了~~
回复 支持 反对

使用道具 举报

5

主题

1419

帖子

2778

积分

名动江湖

Rank: 6Rank: 6

麒麟币
1359
任务币
0
威望
0
贡献
7
主题
5
在线时间
169 小时

最佳新人忠实会员

发表于 2015-9-11 09:23:11 | 显示全部楼层
看不懂 但感谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
客服QQ:
47413829
新QQ群:
418757022
在线时间:周一至周五
9:00-22:00 Email:
47413829@qq.com
举报:网盘资源失效
在线客服
快速回复 返回顶部 返回列表