纳金网
标题:
快速制作场景边界的碰撞作用
[打印本页]
作者:
艾西格亚
时间:
2012-11-26 01:19
标题:
快速制作场景边界的碰撞作用
在一些论坛上经常有人问到场景边界的碰撞范围要如何设定,有的朋友回答是在场景的周围放一圈box collider,这个答案不能说是错误,但我们更关注的是有没有一个更合理与更有效率的方法来完成。
以画面中的场景为例,我们希望角色在场景四周活动,然后走到边缘时不会向下掉落,这时就需要在周围产生阻止角色前进的碰撞网格,而这个网格是类似隐形的墙面,也就是我们要手动来创建的部分。
图中红色虚线表示我们要设置碰撞的部分,接下来让我们回到3dsmax进行碰撞模型的制作。
在3dsmax里面载入整个场景的FBX模型,由于不需要对现有的模型进行任何处理,所以选择整个模型后,按下右键以Freeze Selection将其冻结起来。
冻结模型之前有一个小技巧,将模型属性里面的Show Frozen in Gray 取消勾选,这样模型在冻结后仍可以保留本身的材质与颜色。
使用Line 工具开始进行2D线段的绘制,以直线方式沿着场景的道路周围绘制即可。
桥梁的位置我们增加了一些细节,在这个部分不需要太多的精确度,主要控制在桥面的范围内即可。
如图,白色部分既是绘制完成的2D线段,也是准备用来制作碰撞区域的基本结构。
接下来使用延伸工具使其产生类似墙面的高度,这里我们大约控制在一个人的高度就行了,主要是确保角色不会直接跳过去。
将模型转换成Edit Poly的多边形结构,按下数字键4切换到面的编辑模式,选择上下两个面,按下delete键直接删除。
如图,红色部分既是删除多边形后所保留的碰撞区域,现在我们可以开始进行输出的工作。
使用Export Selected(输出选择的物体)将模型以FBX格式输出到Unity的项目文件,在这边我们使用了一个city_collider的名称来设定碰撞的模型物件。
将city_collier拖曳到Hierarchy面板内,然后增加一个Mesh Collider, 同时取消勾选 Mesh Renderer,这个动作表示我们只要保留碰撞物体的位置,而不只要对其进行任何的渲染计算。
如图,取消了Mesh Renderer之后,绿色的部分就是设定完成的碰撞区域。
接着需要测试一下角色是否在遇到绿色的碰撞区域后就无法前进,在这里我们使用的是First Person Controller来进行观察。
将First Person Controlle摆放在场景后进行播放,当角色前进到桥面的中央时却是直接掉落,很明显的碰撞区域并没有生效,这是什么原因呢?
很简单的一个概念,就是这个碰撞物体的法线是相反的,我们只要回到3dsmax里面使用flip功能将碰撞模型的法线反向即可。
重新再输出一次FBX模型后进行播放,这次角色在走到桥面的中央就无法再继续前行。
通过了这个简单的制作流程,相信大家对于碰撞区域的设置会比较有概念了,往后不论遇到多么复杂的地形与环境,使用这套方式来设置角色的Collision作用就会显得更加的得心应手。
城市场景资源包下载
http://www.narkii.com/club/bbs_261919.shtml
作者:
Zack
时间:
2012-11-26 18:08
学习了。这个很常用到
作者:
may
时间:
2012-11-27 02:46
lZ的回复很不错,支持!
作者:
王者再临
时间:
2012-11-28 19:00
学习!原来是这样处理,有的朋友教了一些很奇怪的方法,现在知道如何制作这类型的碰撞阻挡了。
作者:
比巴卜
时间:
2012-11-29 11:28
不错不错,希望大家共同交流下知识~
作者:
其实我是神
时间:
2012-12-8 08:13
作者:
王者再临
时间:
2012-12-27 21:24
学习了,虽然还是有难度,谢谢楼主的用心
欢迎光临 纳金网 (http://go.narkii.com/club/)
Powered by Discuz! X2.5