查看: 1523|回复: 6
打印 上一主题 下一主题

[其他] Transform和射线检测VS刚体和碰撞器

[复制链接]

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38268
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-7-31 01:33:29 |只看该作者 |倒序浏览

     用刚体实现碰撞效果,模拟现实的受力效果确实很方便。如果考虑效果最好还是用Transform和射线检测,像刚体一样的效果也很容易实现。只要给每帧加上一个向前的位移量,一个向下的位移量模拟重力作用,并把方向转向下一帧的方向,同时对下一帧的距离做射线检测,如有碰撞体,就减小每帧的位移量,并用Vector3的反射函数实现反弹减速,如果让被碰的物体移动,对被碰物体的位置进行插值移动就可以了。这就是脚本的主要内容。

        下面是比较运行效率的简单测试:建一个简单的场景,一个平面,我放了156个圆柱体(感觉这个数量已经很多了),作为发射器,让它们各自每0.3秒生成一个小球,小球4秒后自动销毁。不销毁内存受不了。我的电脑本身配置就低。

        小球自带一个默认的碰撞器,然后对小球加刚体组件,这样就是一个可以产生碰撞效果的刚体了,加一个脚本,脚本的工作只是在初始的时候给它一个初速度。运行。电脑很快就卡了,运行16.1秒时,平均每帧0.15秒。

        接下来,选择运动学刚体项,把刚体改成运动学刚体,运动学刚体不受力,这时要用上面提到的 Transform和射线检测脚本来驱动,并有碰撞和反弹效果,运行,16.1秒时平均每帧 0.2秒, 运行效率更低 。为什么会更低?因为有射线检测,碰撞器就是个累赘了。去掉碰撞器组件,运行,16.1秒时平均每帧0.079秒,运行效率就好很多了。

        在这基础上再把刚体组件也去掉,只用Transform方法运动和射线检测。运行,16.1秒时平均每帧0.077秒。运行效率更高。

        如果只是让它们做运动,去掉碰撞检测。既一种是小球带刚体组件不带碰撞器组件,另一种是小球只用Transform的运动脚本把里面的射线检测去掉。结果是:Transform方法运动,在16.1秒时平均每帧0.041秒;刚体运动,在16.1秒时平均每帧0.056秒;运动学刚体运动,在16.1秒时平均每帧0.060秒。

        上面的比较数据,运行时间越长差距越明显。每帧的平均时间并不是不变的,运行时间越长这个值越大,效率越低增长的幅度越大。

        可见,尽量用Transform的方法运动,刚体要少用,运动的物体尽量用射线检测,碰撞器更要少用。运动学刚体也少用。

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

0

主题

2

听众

4092

积分

中级设计师

Rank: 5Rank: 5

纳金币
530
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-7-31 07:22:23 |只看该作者
谢谢分享
回复

使用道具 举报

115

主题

3

听众

5676

积分

高级设计师

Rank: 6Rank: 6

纳金币
7268
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2014-7-31 08:45:55 |只看该作者
Thanks for sharing this !
回复

使用道具 举报

0

主题

1

听众

80

积分

设计初学者

Rank: 1

纳金币
9
精华
0

活跃会员 灌水之王

地板
发表于 2014-7-31 14:16:02 |只看该作者
很有用的讲解
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2014-7-31 19:10:05 |只看该作者
Thanks for sharing !
回复

使用道具 举报

6#
无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-29 15:09 , Processed in 0.101891 second(s), 33 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部