Unity3D学习笔记(十)物理引擎:碰撞器

物理引擎(Physics Engine和碰撞器(Collider),最近网络上很流行一句话可以用来形容第一次听到这两个词的感觉:虽然不是很明白,但是感觉好像很厉害的样子……^_^。其实这它们在游戏中的出镜率是相当高的,比如前段时间火到爆表的《愤怒的小鸟》、《割绳子》,还有《鳄鱼小顽皮爱洗澡》之类的,都是物理引擎的出色应用。而碰撞则是其中的一个部分而已,本篇笔记会对在unity中碰撞器的使用做个记录,加深对物理引擎中碰撞概念的理解。

打开Unity后在主菜单中找到“GameObject→Create Other→Cube”,在游戏场景中创建一个立方体。方便起见直接把它拖到第一人称视角控制器旁边。点击启动游戏按钮,试试看用WASD移动,会发现无法穿过这个立方体。而其它游戏模型仿佛海市蜃楼一般看得见摸不着,比如下图中的那棵树,一头撞上去结果直接到树的背后去了。(什么,你说你的场景里没有这样的树?请参考上一篇笔记,如何把WOW里的模型导入到Unity中^_^。也不一定要树的模型,拿其他模型做练习也可以的)。

Unity3D学习笔记(十)物理引擎:碰撞器_第1张图片

分别选中立方体和树的模型,在检视面板里查看一下,不难发现在立方体的组件列表里有一个叫做Box Collider(立方体碰撞器)的项。点击它,在场景视图中的立方体就会出现一个绿色的轮廓,这就是碰撞器的真身了。在Unity中会将游戏对象的碰撞器以绿色轮廓显示出来,方便我们手动调整碰撞范围。参数也比较简单:

  • Is Trigger(是否为触发器) 这个选项是供脚本使用的,如果勾选了这个则不会有碰撞的物理效果,但是 游戏引擎会通知脚本有物体发生了碰撞。
  • Material(碰撞器材质) 在这里可以选择一种物理材质,来模拟更真实的碰撞效果,比如金属之间的碰撞与石头之间的碰撞效果肯定是不一样的。
  • Center(碰撞器中心点) 可以调整碰撞器离物体中心的距离,也就是移动绿框。
  • Size(碰撞器大小) 调整碰撞器的缩放大小,调整XYZ可以让碰撞器变成任意大小的长方体。

Unity3D学习笔记(十)物理引擎:碰撞器_第2张图片

除了立方体碰撞器,Unity还提供了一些其他的碰撞器,以供我们在各种不同的情况下使用:

  • Sphere Collider(球形碰撞器): 可以调整半径大小。
  • Capsule Collider(胶囊碰撞器): 可以调整半径、高度和方向,即使是圆柱体也可以用这个做近似的碰撞效果。
  • Wheel Collider(轮子碰撞器): 可以调整虚拟质量、半径高度、悬浮距离、弹力、阻力等等参数,主要用于附加在类似于轮胎这种对象上,模拟驱动力的产生,同时提供碰撞范围,
  • Mesh Collider(网格碰撞器): 这是个强力的碰撞器,用它能创造出不规则的碰撞范围,但需要的性能消耗也比较大。所以虽然像前面的树的模型本应该使用网格碰撞器,但是一般场景中的树木数量都比较多,所带来的性能开销也相当可观,所以官方也建议用胶囊作为树木的碰撞器。只有在的确需要不规则碰撞的时候再用此神器。
  • Terrain Collider(地形碰撞器): 为什么我们的第一人称视角控制器不会从“地面”上往下坠?选中游戏中的地形对象,就能发现它的身影啦。 注:在官方文档中有解释地形的Create Tree Collider(创建树木碰撞器)选项,说是勾选这个,就可以自动为用地形画刷刷出来的树木创建碰撞器,但是笔者尝试了一下貌似无效,不知道哪里设置错了。

所有以上碰撞器都可以在Unity的主菜单“Component(组件)→Physics(物理)”中找到,选中需要附加的游戏对象,然后去主菜单附加即可。对它们有所了解之后本篇的疑问也就明朗了,只要给树的模型添加上一个胶囊碰撞器,就不会出现“穿墙”现象啦。

老农夫表示泪流满面:55555….终于可以守株待兔了!

Unity3D学习笔记(十)物理引擎:碰撞器_第3张图片


作者:黄旭杨 http://huangxuyang.cn/archives/36


你可能感兴趣的:(unity3d)