找回密码
 注册帐号

扫一扫,访问微社区

自学总结 碰撞检测(十一)

6
回复
3570
查看
[ 复制链接 ]
排名
1
昨日变化

1592

主题

3671

帖子

1万

积分

Rank: 16

UID
2
好友
123
蛮牛币
3372
威望
121
注册时间
2013-5-19
在线时间
2328 小时
最后登录
2019-9-12

原创先锋

2014-6-6 18:07:30 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 admin 于 2013-6-7 09:59 编辑

在前几天的总结中,已经给篮球加过钢体 碰撞体 乃至于材质,那么我们又将如何检测碰撞呢?如何计算投中篮球的分数呢?

1.碰撞检测

首先我们先创建一个空对象

1.jpg

然后给这个空对象加上一个碰撞体

2.jpg

最后在层次窗体中选择这个空对象,在属性窗体中设置好它的大小、位置

3.jpg


下面将以代码的方式来实现碰撞检测
  1. //检测碰撞
  2. void OnTriggerEnter(Collider other)
  3. {
  4.     //获取名字
  5.    if (other.gameObject.name=="basketballPrefab(Clone)")
  6.    {
  7.       //分数加2
  8.       score +=2;
  9.    }
  10. }
复制代码
注:OnTriggerEnter 表示碰撞检测的方法
  1. //绘制界面、
  2. void OnGUI()
  3. {
  4. //绘制一个label,显示倒计时
  5. GUI.Label (new Rect (10,10,100,20),"Time left:"+timeLeft.ToString () );
  6. //绘制一个label,显示分数
  7. GUI.Label (new Rect (10,30,1000,20),"Score:"+score);

  8. if (showEndbutton )
  9. {
  10.     //点击Restart Game按钮,则重置游戏
  11.     if (GUI.Button (new Rect (Screen.width/2-50,Screen.height/2-50,100,40),"Restart Game"))
  12.         Restart();   
  13.     //如果点击Publish Score按钮,则跳转到分数面板        
  14.     if (GUI.Button (new Rect (Screen.width/2-50,Screen.height/2,100,40),"Publish Score"))
  15.         Application.LoadLevel ("Score");
  16.     //如果点击Exit Game,则退出游戏
  17.     if (GUI.Button (new Rect (Screen.width/2-50,Screen.height/2+50,100,40),"Exit Game"))
  18.         Application.Quit ();
  19. }
  20. }

  21. //重置游戏场景
  22. public        void Restart()
  23. {
  24.   showEndbutton =false ;
  25.            player.isPlay =true ;

  26.   isPlay =true;

  27.   totalTime =0;
  28.   timeLeft =timeLength ;
  29.   score =0;         
  30. }


  31. void Update ()
  32. {
  33. if (isPlay )
  34. {
  35. totalTime +=Time.deltaTime ;
  36. //判断当前时间是否大于0,大于0 获得剩余时间
  37. if (timeLeft >0)
  38. timeLeft =(int)(timeLength -totalTime) ;
  39. else if (timeLeft ==0)
  40. {
  41.                                 //设置游戏暂停
  42.        isPlay =false ;
  43. player.isPlay =false ;
  44. //运行子线程
  45. StartCoroutine (delayforSometime (5.0f));
  46. }        
  47. }
  48. }
  49. IEnumerator delayforSometime(float time)
  50. {
  51. yield return new WaitForSeconds (time );
  52. //设置显示按钮
  53. showEndbutton =true ;
  54. }
复制代码
ok,通过上述设置及代码,运行游戏

1.游戏界面左上角显示剩余时间 和篮球进球的分数

4.jpg


2.当剩余时间为0 ,暂停游戏 弹出 菜单按钮  分别为 重置游戏  对比分数 退出游戏

5.jpg



怎么样?是不是开始有游戏的效果了呢?呵呵...继续加油


来自QQ群:290248177     By. ζޓއއއ 随风去旅行  QQ:512241701

回复

使用道具 举报

4四处流浪
452/500
排名
10344
昨日变化

1

主题

159

帖子

452

积分

Rank: 4

UID
24
好友
7
蛮牛币
216
威望
-3
注册时间
2013-5-28
在线时间
190 小时
最后登录
2019-7-10
QQ
2014-6-7 16:44:03 显示全部楼层
这个帖子很早以前就看过了=。=
回复 支持 反对

使用道具 举报

7日久生情
2079/5000
排名
598
昨日变化

0

主题

458

帖子

2079

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
3744
好友
0
蛮牛币
4982
威望
0
注册时间
2013-9-12
在线时间
240 小时
最后登录
2016-5-20
2014-9-16 09:41:44 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

4四处流浪
410/500
排名
6050
昨日变化

0

主题

104

帖子

410

积分

Rank: 4

UID
4255
好友
1
蛮牛币
416
威望
0
注册时间
2013-9-21
在线时间
78 小时
最后登录
2014-5-13
2014-9-23 15:39:30 显示全部楼层
楼主屌炸天了
回复 支持 反对

使用道具 举报

6蛮牛粉丝
1459/1500
排名
1177
昨日变化

3

主题

243

帖子

1459

积分

Rank: 6Rank: 6Rank: 6

UID
3935
好友
1
蛮牛币
3190
威望
0
注册时间
2013-9-16
在线时间
225 小时
最后登录
2019-6-30
2014-9-27 21:54:45 显示全部楼层
碰撞检测还是不太懂!
回复 支持 反对

使用道具 举报

排名
17816
昨日变化

0

主题

31

帖子

83

积分

Rank: 2Rank: 2

UID
27709
好友
0
蛮牛币
97
威望
0
注册时间
2014-6-2
在线时间
18 小时
最后登录
2015-3-28
2015-6-2 13:44:45 显示全部楼层
学习中................
回复

使用道具 举报

3偶尔光临
157/300
排名
11819
昨日变化

0

主题

19

帖子

157

积分

Rank: 3Rank: 3Rank: 3

UID
75387
好友
1
蛮牛币
256
威望
0
注册时间
2015-2-22
在线时间
56 小时
最后登录
2015-12-5
2015-3-2 13:03:45 显示全部楼层
谢谢分享。。。。。。。。。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则