Unity3D学习笔记(十)物理引擎:碰撞器
2016-02-23 17:14
337 查看
物理引擎(Physics Engine和碰撞器(Collider),最近网络上很流行一句话可以用来形容第一次听到这两个词的感觉:虽然不是很明白,但是感觉好像很厉害的样子……^_^。
其实这它们在游戏中的出镜率是相当高的,比如前段时间火到爆表的《愤怒的小鸟》、《割绳子》,还有《鳄鱼小顽皮爱洗澡》之类的,都是物理引擎的出色应用。而碰撞则是其中的一个部分而已,本篇笔记会对在Unity中碰撞器的使用做个记录,加深对物理引擎中碰撞概念的理解。
打开Unity后在主菜单中找到“GameObject→Create Other→Cube”,在游戏场景中创建一个立方体。方便起见直接把它拖到第一人称视角控制器旁边。点击启动游戏按钮,试试看用WASD移动,会发现无法穿过这个立方体。
而其它游戏模型仿佛海市蜃楼一般看得见摸不着,比如下图中的那棵树,一头撞上去结果直接到树的背后去了。(什么,你说你的场景里没有这样的树?请参考上一篇笔记,如何把WOW里的模型导入到Unity中^_^。也不一定要树的模型,拿其他模型做练习也可以的)。
分别选中立方体和树的模型,在检视面板里查看一下,不难发现在立方体的组件列表里有一个叫做Box Collider(立方体碰撞器)的项。点击它,在场景视图中的立方体就会出现一个绿色的轮廓,这就是碰撞器的真身了。在Unity中会将游戏对象的碰撞器以绿色轮廓显示出来,方便我们手动调整碰撞范围。参数也比较简单:
Is Trigger(是否为触发器) 这个选项是供脚本使用的,如果勾选了这个则不会有碰撞的物理效果,但是游戏引擎会通知脚本有物体发生了碰撞。
Material(碰撞器材质) 在这里可以选择一种物理材质,来模拟更真实的碰撞效果,比如金属之间的碰撞与石头之间的碰撞效果肯定是不一样的。
Center(碰撞器中心点) 可以调整碰撞器离物体中心的距离,也就是移动绿框。
Size(碰撞器大小) 调整碰撞器的缩放大小,调整XYZ可以让碰撞器变成任意大小的长方体。
除了立方体碰撞器,Unity还提供了一些其他的碰撞器,以供我们在各种不同的情况下使用:
Sphere Collider(球形碰撞器): 可以调整半径大小。
Capsule Collider(胶囊碰撞器): 可以调整半径、高度和方向,即使是圆柱体也可以用这个做近似的碰撞效果。
Wheel Collider(轮子碰撞器): 可以调整虚拟质量、半径高度、悬浮距离、弹力、阻力等等参数,主要用于附加在类似于轮胎这种对象上,模拟驱动力的产生,同时提供碰撞范围,
Mesh Collider(网格碰撞器): 这是个强力的碰撞器,用它能创造出不规则的碰撞范围,但需要的性能消耗也比较大。所以虽然像前面的树的模型本应该使用网格碰撞器,但是一般场景中的树木数量都比较多,所带来的性能开销也相当可观,所以官方也建议用胶囊作为树木的碰撞器。只有在的确需要不规则碰撞的时候再用此神器。
Terrain Collider(地形碰撞器): 为什么我们的第一人称视角控制器不会从“地面”上往下坠?选中游戏中的地形对象,就能发现它的身影啦。 注:在官方文档中有解释地形的Create Tree Collider(创建树木碰撞器)选项,说是勾选这个,就可以自动为用地形画刷刷出来的树木创建碰撞器,但是笔者尝试了一下貌似无效,不知道哪里设置错了。
所有以上碰撞器都可以在Unity的主菜单“Component(组件)→Physics(物理)”中找到,选中需要附加的游戏对象,然后去主菜单附加即可。对它们有所了解之后本篇的疑问也就明朗了,只要给树的模型添加上一个胶囊碰撞器,就不会出现“穿墙”现象啦。
老农夫表示泪流满面:55555….终于可以守株待兔了!
其实这它们在游戏中的出镜率是相当高的,比如前段时间火到爆表的《愤怒的小鸟》、《割绳子》,还有《鳄鱼小顽皮爱洗澡》之类的,都是物理引擎的出色应用。而碰撞则是其中的一个部分而已,本篇笔记会对在Unity中碰撞器的使用做个记录,加深对物理引擎中碰撞概念的理解。
打开Unity后在主菜单中找到“GameObject→Create Other→Cube”,在游戏场景中创建一个立方体。方便起见直接把它拖到第一人称视角控制器旁边。点击启动游戏按钮,试试看用WASD移动,会发现无法穿过这个立方体。
而其它游戏模型仿佛海市蜃楼一般看得见摸不着,比如下图中的那棵树,一头撞上去结果直接到树的背后去了。(什么,你说你的场景里没有这样的树?请参考上一篇笔记,如何把WOW里的模型导入到Unity中^_^。也不一定要树的模型,拿其他模型做练习也可以的)。
分别选中立方体和树的模型,在检视面板里查看一下,不难发现在立方体的组件列表里有一个叫做Box Collider(立方体碰撞器)的项。点击它,在场景视图中的立方体就会出现一个绿色的轮廓,这就是碰撞器的真身了。在Unity中会将游戏对象的碰撞器以绿色轮廓显示出来,方便我们手动调整碰撞范围。参数也比较简单:
Is Trigger(是否为触发器) 这个选项是供脚本使用的,如果勾选了这个则不会有碰撞的物理效果,但是游戏引擎会通知脚本有物体发生了碰撞。
Material(碰撞器材质) 在这里可以选择一种物理材质,来模拟更真实的碰撞效果,比如金属之间的碰撞与石头之间的碰撞效果肯定是不一样的。
Center(碰撞器中心点) 可以调整碰撞器离物体中心的距离,也就是移动绿框。
Size(碰撞器大小) 调整碰撞器的缩放大小,调整XYZ可以让碰撞器变成任意大小的长方体。
除了立方体碰撞器,Unity还提供了一些其他的碰撞器,以供我们在各种不同的情况下使用:
Sphere Collider(球形碰撞器): 可以调整半径大小。
Capsule Collider(胶囊碰撞器): 可以调整半径、高度和方向,即使是圆柱体也可以用这个做近似的碰撞效果。
Wheel Collider(轮子碰撞器): 可以调整虚拟质量、半径高度、悬浮距离、弹力、阻力等等参数,主要用于附加在类似于轮胎这种对象上,模拟驱动力的产生,同时提供碰撞范围,
Mesh Collider(网格碰撞器): 这是个强力的碰撞器,用它能创造出不规则的碰撞范围,但需要的性能消耗也比较大。所以虽然像前面的树的模型本应该使用网格碰撞器,但是一般场景中的树木数量都比较多,所带来的性能开销也相当可观,所以官方也建议用胶囊作为树木的碰撞器。只有在的确需要不规则碰撞的时候再用此神器。
Terrain Collider(地形碰撞器): 为什么我们的第一人称视角控制器不会从“地面”上往下坠?选中游戏中的地形对象,就能发现它的身影啦。 注:在官方文档中有解释地形的Create Tree Collider(创建树木碰撞器)选项,说是勾选这个,就可以自动为用地形画刷刷出来的树木创建碰撞器,但是笔者尝试了一下貌似无效,不知道哪里设置错了。
所有以上碰撞器都可以在Unity的主菜单“Component(组件)→Physics(物理)”中找到,选中需要附加的游戏对象,然后去主菜单附加即可。对它们有所了解之后本篇的疑问也就明朗了,只要给树的模型添加上一个胶囊碰撞器,就不会出现“穿墙”现象啦。
老农夫表示泪流满面:55555….终于可以守株待兔了!
相关文章推荐
- Unity3D学习笔记(九)模型导入
- Unity使用Hotween动画插件遇到的坑
- Unity3D学习笔记(八)动画
- Unity3D学习笔记(七)光与影
- Unity3D学习笔记(六)音乐和音效
- Unity3D学习笔记(五)湖泊与瀑布
- Unity3D学习笔记(四)天空、光晕和迷雾
- Unity3D学习笔记(三)为地形添加花草树木
- Unity3D学习笔记(二)创建地形和漫游
- 关于Unity5版本动画系统中anystate跳转重复播放当前动画解决方案
- Unity3D学习笔记(一)界面介绍
- 整合谷歌Admob在Unity3D的Android和iOS游戏
- 关于Unity中的Animator使用animator.Play()不能重复播放同一个Animatoin的解决方案
- Unity3D使用Spine方法
- 关于因为修改脚本名称,导致Unity3D预制体上面的脚本出现丢失状况解决方法
- Unity3D改变粒子运行速度
- Unity3D使用Animator报:"Animator.GotoState: State could not be found invalid layer index"错误解决方
- Unity3D关于一个父物体下锚点位置问题
- Unity3D Animation暂停与恢复
- Unity播放声音的时候,音量与原大小不符的解决方案