假期计划跟着这本书做上面的一些例子学习U3D,在图书馆里翻了一遍觉得还不错(至少比另外几本国内写的书好23333)就借来了。假期基本是从第四章开始。这本书第一章主要介绍Unity本身的界面等等通识,第二三章合在一起构建了一个3D空间里的演示,并且有简单的射击功能。其实其中有些东西感觉还是值得探究的,比如三维空间里的一些运算、射线ray的碰撞检测方法、协程(Coroutine)等等。
然后过了n天终于真正开始记录第四章,此章标题为“为游戏开发图形”。主要介绍了将会使用的一些常见asset以及如何导入。这一张书中介绍的内容简单,也没有什么错误。主要介绍了下面几个方面:
1.场景的2D图形贴图。
2.3D场景中的天空盒(Skybox)
3.3D模型的导入
4.粒子系统的效果
如果不深究的话1和3的导入都可以归结为拖动对应的文件(.png、.obj......)。因为一个对象被创建时会自动生成一个“Default-Material“的材质。因此在选定一个对象后,贴图可以拖动到对象上”直接“使用,事实上贴图会被放置到材质中的Albedo这一栏。当然如果有合适的材质(Material)可以直接拖动到图形界面里的某个对象而不需要选定。书中对于这些内容并没有太多的解释,但是提到了Tiling这一材质属性,书中的解释是对X,Y两个方向的平铺次数。
下图为X=1,Y=1的情况,后一张为X=8,Y=8的情况,可以看到木板贴图变得更“密”了。(那个MC风格的小船我待会解释来历2333)
关于天空盒Skybox。skybox可以成是一个有着上下左右前后六面的立方体。skybox的设置位于window|lighting中。图中Skybox这一栏默认为Default,可以拖动其他材质到这里启用.这里我已经设置完了。
放入的sky材质的shader属性选择Skybox|6 Sided,就和字面描述一般,它需要六个面的贴图。贴图资源来自书中提到的“www.93i.de“。以正确对应好贴图后基本的样子就有了。书中再提到一点便是对贴图的wrapmode的调整。将Repeat修改为Clamp并且启用(点击apply),这样能避免天空盒六面的几条交界处出现(其实不明显的)线条。
3D模型的导入。这里我用了前段时间一直很想试试的mineways。这个软件能够将minecraft的地图转成.obj文件。介绍贴图时的那两张图的小船就是这样来的。不过我先前还用blender修改了一些面,最后再作为asset导入到unity里。这张图是blender里的。不得不说minecraft相当地方便……虽然这样得到我想要的模型总有一种穿着雨衣洗澡的感觉。将小船的.obj导入后,和前面类似,导入需要的贴图,基本就OK了。
粒子系统(Particle System)的效果 。先看这个真 不要钱特效的效果。
下面是粒子系统在Inspector中的属性。这章的内容主要介绍了Start Lifetime、Start Speed、Simulation Space以及下方中的Shape、Size over Lifetime、Renderer设置。Start Lifetime和粒子的存在时间有关,直观上看,Lifetime数值的减少让屏幕中存在的粒子数量减少。Start Speed为粒子的运动速度,调大后能看到整个粒子系统变“长”。Simulation Space调为WORLD后,粒子的运动参照为整个空间?
Shape用于设置粒子的发射形状,默认是一个圆锥(Cone).Size over Lifetime控制粒子大小和时间的关系,可以设置需要的曲线。Renderer设置每个粒子的外观。这里为了看起来更像火焰的形状,把shape改成了box。同时选择一条随时间递减的曲线。再选好合适的材质放入Renderer的材质栏,不要钱特效就完成了。
下面是一个火焰材质的图像。因为懒癌,到百度随便找了个火的图片……发现效果还OK。这个材质的Shader属性选择的是Particles|Additive,能够让黑色显得不可见。拖动到Renderer中的Material栏。完成。