
6.游戏引擎开发
文章平均质量分 69
caimouse
在IT行业有20多年的经验。拥有20多年的C和C++开发经验,5年以上Python开发经验,资深数据库开发、上百G数据库优化经验。曾经任职嵌入式工程师、P2P开发工程师、银行信用卡交易系统工程师、全自动化电池测试部门经理。
展开
-
平面(Plane)和四方形(Quad)
平面(Plane)这是一个10个单位长度的正方形平面,坐标是XZ轴平面里,可以使用整个四方形的纹理来贴图。平面常用来表示地面和墙,也可以在GUI用来显示一些图片或者视频,或者一些特别的效果,不过使用quad四方形来做这些事情更加方便、合理。四方形(Quad)四方形跟平面有点像,但它四个边组成,只有两个三角形,平面是两百个三角形组成,因此从效率上来说,四方形比平面更好。比如要在游戏里...原创 2019-02-20 11:26:14 · 6362 阅读 · 0 评论 -
游戏制作之路(59)使用UGUI的文本
在前面学习过使用NGUI的内容,可以兼容旧的游戏代码,但是Unity 5.0之后使用UGUI作为主要游戏界面开发,下面就来学习UGUI相关界面的操作内容,比如游戏里经常要显示分数,那么就来学习一下怎么样实现UGUI来显示分数的过程。 先要创建一个空的3D工程,如下图:接着下来创建一个画布Canvas,画布对象定义了GUI的基本显示区域,它是一个容器,可以在它上面放置按钮、文本和其它...原创 2019-01-31 14:15:31 · 737 阅读 · 0 评论 -
游戏制作之路(49)地形导入高度图
前面学习了通过凹凸工具、高度工具,以及平滑工具来创建地形,这样方便构建任何形状的地形,但是这样对于游戏开发人员来说,工作量太大了,另外一个对于现实世界的地形进行构建时,就更麻烦,可能比较对应不上。因而在游戏开发里,经常使用算法来生成地形,或者直接从卫星数据里导入地形的高度数据。使用算法生成地形可以有无限种类,使用卫星数据可以逼真地模拟现实世界里的地形。无论是算法生成,还是卫星数据,都需要有一种文件...原创 2019-01-26 16:09:32 · 2308 阅读 · 0 评论 -
游戏制作之路(48)地形纹理工具
前面学习了制作地形,这些地形有高也有低,还有高与低之间的过渡,但怎么样才能让这些地形有点生气,比如长草,或者有点岩化,泥土的颜色等等。在现实里,土地有不同颜色,那么unity需要使用纹理贴图来模拟这个过程,此时就要使用纹理工具了。 一般unity项目创建时并没有加载纹理资源,所以当你在纹理添加时,就如下:这时发现并没有合适的纹理贴图可以选择,那么怎么办呢?其实可以导入unity内置...原创 2019-01-25 12:23:37 · 1454 阅读 · 0 评论 -
游戏制作之路(41)物理材质对象
在前面学习过重力的现象,这是大自然界里存在的常见的物理现象,接着下来学习一个物理属性,比如打乒乓球时,发现这个乒乓球在台面弹跳起来,这个事实说明了乒乓球具有弹性,那么我们在unity里怎么样来模拟这种具有弹性的现象呢?其实要实现这个功能,需要使用物理材质的属性,下面就来通过一个例子来学习这个功能。 先来创建两个cube对象,把这两个对象当作地面木板,再创建一个球体,让这个球从上面滚下来,然...原创 2019-01-20 17:10:03 · 633 阅读 · 0 评论 -
游戏制作之路(47)地形平滑工具
在前面学习了限高,或者说等高地形设置,但是在不同高度之间可能有斜坡,不是绝对90度的垂直,这时使用前面两个高度工具就不好办了,需要使用新的平滑工具。就可以把面这个图:选择平滑工具之后可以平滑成这个样子:目前学习了三个工具,第一个设置高或低的地形,第二个设置等高的地形,第三个把前面两者之间建立过渡的地形。https://blog.youkuaiyun.com/caimouse/artic...原创 2019-01-24 15:07:11 · 1299 阅读 · 0 评论 -
游戏制作之路(46)地形高度工具
在前面学习了使用凹凸工具来创建山形,但是如果两个重叠的山放在一起,就会发现相交部分会不断地变高,如下图:这样使用凹凸工具来创建一些特别的地形就不行了,比如像广西龙胜梯田,这时就需要使用限制高度的高度工具,因为这个工具碰到比它高的就切掉,比它低的就填高,如下图:在上图里采高度工具,并且把高度限制为20,这样不管鼠标怎么样拉动,也不会变得很高,失去控制,同时两次作用重叠部分也不会变成增...原创 2019-01-24 14:47:24 · 713 阅读 · 0 评论 -
游戏制作之路(45)地形凹凸工具
在前面学习了怎么样使用设置工具,接着下来学习地形的修改,在现实世界里,看到很多山,很多凹地,要在游戏里实现这种地形,就必须使用凹凸工具来设计。点击A处的图标按钮,就可以进入凹凸工具模式,然后可以根据实际需要在B处选择不同的笔刷工具,画刷的大小可以C处设置,笔刷的强度或透明度可以在D处调整,默认值是50。我们来测试一下工具的使用,选择第四个工具,并把Brush Size设置为100,Op...原创 2019-01-24 13:59:24 · 803 阅读 · 0 评论 -
游戏制作之路(39)加载人形的动画3
前面学习了一个动作的状态,只是一个空闲状态,现在来再添加多一个状态,这样就可以进行两个状态之间的切换了。因此继续从下载的资源目录里导入一个新动作,如下图:这次可以从菜单Assets上选择,然后选择B处的子菜单,就可以打开导入资源的目录窗口,如下图:在这里选择标准的跳动动画的文件,文件名称为Standing_Jump.anim,成功之后就会在资源的窗口下面看到如下图:在这里看...原创 2019-01-08 15:31:46 · 510 阅读 · 2 评论 -
游戏制作之路(44)地形设置
地形(Terrain)在不少类型游戏中扮演着很重要的角色,例如沙盒游戏、战略游戏(吃鸡游戏)以及为数众多的角色扮演游戏,都会精心制作属于这个游戏的地图,再以此为基础,加上动物、植物、怪物、建筑和角色来布置场景,所以地形制作工具几乎可以是现代游戏引擎不可的缺少的组件。 可以通过菜单GameObject/3D Object/Terrain,如下图的方式来创建:通过上面的方式来创建完成之...原创 2019-01-24 11:42:28 · 2226 阅读 · 0 评论 -
游戏制作之路(39)加载人形的动画2
由于没有动画控制器,这个动画可以运行,也可以查看到动画出现在游戏里了,但是这个角色并没有动起来,因为它没有动起来的路线或方式。因此下面就来学习添加动画的控制器,如下图:在Assets下面的空白处点击右键,弹出右键菜单,然后在B处选择子项菜单C,就可以创建一个动画控制器出来,接着把它命名为Test,如下图:接着双击Test控制器,就可以打开动画控制器编辑界面,如下图:打开动画...原创 2019-01-07 14:51:27 · 434 阅读 · 2 评论 -
游戏制作之路(37)显示统计星星的个数
在前面已经实现从开始菜单到进入游戏,也实现了从游戏主循环退出到开始菜单,但是在玩这个游戏时,点击一下就产生一个星星,那么怎么样才能像别的游戏那样实现计分,比如计算有多少个星星,并把它显示在游戏界面上面。这次就来解决这个问题,要想在游戏界面上显示星星的个数,那么就得先在界面上创建一个label,接着问题又来了,怎么样创建这个label呢? 要创建这个label,如下图打开StarGame.c...原创 2019-01-02 15:10:07 · 554 阅读 · 0 评论 -
游戏制作之路(36)退出游戏循环返回开始菜单
在前面已经学习了从游戏开始菜单进入游戏主循环,当玩家玩累了,想退出游戏,或者想重新开始游戏,应该怎么样实现呢?下面就来解决这个问题。 首先要在游戏主循环的界面上创建一个退出的按钮,这样玩家才可以随时退出游戏。按前面方法,在StarGame.cs脚本里添加一个OnGUI()函数,如下: void OnGUI() { }然后在脚本里添加一个退出按钮的样式变量,如...原创 2019-01-01 15:49:49 · 3421 阅读 · 2 评论 -
游戏制作之路(39)加载人形的动画4
在前面只是实现不同动画之间进行无条件地转换执行,其实在游戏里,经常要切换动画执行的,比如让一个角色行走时播放的动画是行走的动画,如果角色要跳起来,播放的动画是跳动的动画,如果角色转身时,应该播放转身的动画。现在所有的动画都放到动画编辑器里了,如果想要动画在状态之间有条件地进行切换,就需要增加切换条件参数,这样才可以在脚本里设置触发条件。怎么样来添加触发切换状态的条件呢?下面就来解决这个问题。先要在...原创 2019-01-10 15:39:23 · 516 阅读 · 0 评论 -
游戏制作之路(39)加载人形的动画1
前面学习了怎么样加载旧的动画,是非常简单的,一看就学会了,但本次要来学习人形(Humanoid)的动画,就有点复杂,要做好心理准备。不过,人形的动画是最常使用的,因为游戏里看到最多的还是两条腿的动物,比如人、机器人等。因此学习人形动画也是最基本的技能,否则你很难做出角色动作出来。 我们都知道巧妇难以无米之炊,因而在学习人形动画之前,必须让美工做好一些基本的动画部件,比如模型、基础动画、贴图...原创 2019-01-04 20:24:14 · 629 阅读 · 0 评论 -
游戏制作之路(33)创建星星的预制件
前面已经学习了一个制作预制件的例子,就是制作子弹的,这次再次来制作一个星星的预制件,因为在后面的小游戏里要使用到它。预制件的作用,就是一个模板,它可以生成无数个游戏对象,比如天上的星星有很多,如果一个一个地拖着创建,非常费劲,但使用代码来生成一千个,或一万个都是很容易的事情。为了制作预制件之前,先要把这个星星创建了来,在这里使用Image对象来表示星星,如下图这样创建:从上图可以看到,...原创 2018-12-25 15:55:29 · 499 阅读 · 0 评论 -
游戏制作之路(60)使用UGUI的按钮
前面学习了文本显示,接着下来最常用的就是按钮了,比如构造游戏的菜单就需要使用按钮来组成,还有一些游戏里的建筑物,背包触发按钮等等。 继续使用前面的例子,在这个基础上来添加一个按钮,如下图来添加一个按钮:在主菜单GameObject/UI/Button里创建一个按钮,如下图:创建完这个按钮之后,可能这个按钮如前面的文本框一样,显示并不符合大小,就可以使用左上角的工具来调整按钮...原创 2019-02-01 10:44:14 · 653 阅读 · 0 评论 -
游戏制作之路(50)地形树木工具
前面学习了地形轮廓的构造,地图的大体设计就算完成了,接着下来就是细节的调整,比如山上长有树木,地上有岩石等等,这次就来学会怎么样放置树木。 要想在地图上放置树木,要先有树木的预制件,这个预制件可以自己去构建,也可以使用别人的资源。在这里,采用unity标准的树木资源,第一步先创建一个新的空工程,如下图:接着下来就是导入树木的预制件,如下图:从菜单Assets里打开,选择子项...原创 2019-01-27 14:31:02 · 935 阅读 · 0 评论 -
胶囊体(Capsule)和圆柱体
胶囊体(Capsule)胶囊体是由一个单位长度的圆柱和两个半单位的半球组成。纹理是从两个极点边缘线开始贴图。不过在实际环境里使用这个外形的物体不多见,经常使用它来做碰撞测试,比如一个游戏里人物就可以使用它来代替测试地图里碰撞是否合理,是否会卡住人物出不来。它比使用立方体来测试要好很多,并且更加接近人体的结构。圆柱体这是一个简单的圆柱体,它的直径是一个单位,高是两个单位。它的纹理包括...原创 2019-02-20 10:32:29 · 4271 阅读 · 0 评论 -
Unity基本物体和临时对象
我们知道unity可以使用任何建模软件构造的3D模型,但是有一些简单的模型,或者临时测试对象,就不必要使用建模软件来构造了,因为那样效率非常低下。比如你正在测试一个算法,只需要一个物体就可以代表一辆汽车在运动了。因此,unity提供了一些基本的模型创建,命名为Cube(立方体),Sphere(球体), Capsule(胶囊体), Cylinder(圆柱体), Plane(平面)和 Quad(四方形...原创 2019-02-20 10:00:10 · 1047 阅读 · 0 评论 -
游戏制作之路(58)导入粒子系统
前面学习了创建一个简单的粒子系统,一般情况下是可以满足的,但是需要更高级的功能,就得自己去创建了,可以使用Particle Animator从零开始创建,还有另外一个方法,就是使用资源,比如默认的资源里就有20多种粒子特效,包括尘土、爆炸、火焰、水花等效果,已经做成预制件供我们使用了。如下图进行导入资源:在主菜单Assets/Import Package/ParticleSystems...原创 2019-01-30 17:32:22 · 876 阅读 · 0 评论 -
Unity资源的基本类型
资源的基本类型图片文件Unity支持大多数图片文件类型,比如BMP、TIF、TGA、JPG和PSD。如果你直接保存分层的Photoshop的PSD文件到Assets目录下面,unity会把这些文件当作简单的文件处理,并不会处理透明通道的属性,如果要使用alpha特性,需要使用别的方法进行导入。FBX和模型文件由于unity支持FBX的文件格式,可以从任何3D建模软件导出FBX的格式,这...原创 2019-02-16 15:47:23 · 2176 阅读 · 0 评论 -
Unity资源的工作流程 (Asset Workflow)
资源的工作流程 Asset Workflow在游戏开发里,要使用很多资源,那么在Unity里是怎么样来管理游戏的资源呢?下面就来简单地介绍一下Unity的资源工作流程,理解资源工作流程的基本概念和过程。Asset 是什么呢?它就是资源,是表示游戏里或工程里的一项可以使用的项目。这些资源可以从Unity编辑器之外创建,比如3D模型、声音文件、图片或者其它unity支持的类型。也有一些资源是在...原创 2019-02-16 14:21:12 · 905 阅读 · 0 评论 -
游戏制作之路(57)创建粒子系统
前面学习了风和水的创建,那么火、烟、火花、云、雪、尘等怎么样来创建呢?其实像这些细小的物体,都使用粒子系统来模拟的。一般粒子可以设置一些基本的物理性质,因此,设计者可以设置方向、大小和速度等不同性质来调整产生不同的变化。Unity具有内置的Particles(粒子系统),可以用来创建游戏中所需的特效。 下面就来创建一个粒子系统,如下图先行创建一个立方体:我们可以想像这个立方体就是一...原创 2019-01-30 12:51:06 · 848 阅读 · 0 评论 -
游戏制作之路(56)模拟水
前面学习了创建风,可以吹动树,但是大自然里还有水,比如湖、大海等等。这样湖光山色,就更符自然世界里的景象了。下面就来学习怎么样创建水的物体,比如小水池,小湖,大海等。先创建一个简单的地形,像前面的例子一样,如下图:在这里创建地形Terrain,在它上面还是空的,因此导入草和树,以及水,如下图进行:接着弹资源包窗口,就按下面选项进行导入:在这里选择树木、草和水的资源导入,后面...原创 2019-01-29 15:19:54 · 1059 阅读 · 0 评论 -
游戏制作之路(55)模拟风
前面学习了地形的构造,也放上了一些树木,还有一些草,但这些树和草都静止的,并没有动起来,原因何在?其实这种场景里并没有风,所以树都是静止的,如果要它们动起来,需要添加风的模拟。下面就来添加风,先像上前面一样建立地形环境,种上一些树,如下图:在这个工程里可以看到地面上种有两棵树,如果这时运行play模式,查看到树并没有动起来的。接着下来,如下图来创建风:在主菜单上点击GameObje...原创 2019-01-29 13:21:05 · 1800 阅读 · 0 评论 -
游戏制作之路(54)自制天空盒
前面更换的天空盒,都是来自于标准的资源,并且只有9套,可能不满足你的要求,就需自己来创建天空盒。那么在unity里怎么样才能自制天空盒呢?其实这个不是很难的事情,只要让美工做好六个图片就可以自制天空盒。 先要加载六个天空盒的图片,如下图:在资源里导入六个图片资源,然后全部选中六个图片,修改它的Wrap mode,如下图:默认是Repeat模式,需要修改为Clamp模式,这样...原创 2019-01-29 12:53:31 · 2148 阅读 · 0 评论 -
游戏制作之路(53)更换场景的天空盒
前面学习了更换摄像机的天空盒,如果要不同的场景里的天空盒也要更换,就需要设置场景里的天空盒。如下图这样来更换:在这里选择菜单里Window,然后选择子菜单Lighting,再选择子菜单Settings,就会弹出设置窗口:在Scene选项页里,就可以看到Skybox Material,这里就可以设置场景的天空盒。下面就是选择第一个天空盒的情况:当你选择天空盒确认之后,就会在那里显...原创 2019-01-28 20:42:40 · 778 阅读 · 0 评论 -
游戏制作之路(52)更换摄像机的天空盒
前面学习了构造地形、树木和草,但是现实世界里还有天空,那么在unity里怎么样来模拟天空呢?现在基本上都使用天空盒(skybox)来实现,因为天空盒具有简单,渲染速度快,视觉效果好。下面就来学习怎么样更换摄像机里的天空盒,要更换天空盒,那么得先有天空盒的资源,因此从unity商店里下载免费的资源,如下图:切换到Asset Store,然后在资源搜索框里输入standard assets,点...原创 2019-01-28 14:00:32 · 698 阅读 · 0 评论 -
游戏制作之路(51)地形细节工具
前面学习了构造树木的地形,一般情况在树木之下,还会有长一些草,这些草比草皮要高一些,可能还要放一些石头,这就要使用地形细节工具。在前一个例子的基础之上,再来添加一些草,如下图进行添加:这里与前面的例子一样,导入一些草的资源,成功之后显示如下:有了预制草之后,就可以点击细节工具进行添加了,如下图:点击Edit Details就会有添加子菜单出现,如下图:然后再点击Ad...原创 2019-01-27 21:28:58 · 1186 阅读 · 0 评论 -
游戏制作之路(61)使用UGUI的按钮动画
前面学习过按钮的事件响应,当鼠标移动上面时,按钮可以更改颜色,但是在游戏里一般追求就是个性化,以及动画大量的使用。当鼠标移动到按钮上面时,要想播放一个动画怎么办呢?这时就需要使用按钮动画的功能了,这个功能可以使用在所有GUI的组件上,比如弹出式菜单、隐藏菜单等等。既然这个功能这么强大,下面就先从简单的学习起来,如下图创建一个空的3D工程:创建空的工程,把场景保存为Test,然后按前面的方法...原创 2019-02-01 14:10:15 · 1096 阅读 · 0 评论 -
游戏制作之路(43)固定关节
前面学习了铰链关节,它可以用来模拟像门的方式转动。这次将要来学习另一个关节是固定关节(Fixed Joint),这个关节主要用来让物体与物体之间临时的连接,或者让物体暂时固定。比如像一个羽毛粘在小鸟上,当风一吹,这根羽毛就要飞走,因为羽毛受到了风力,如果没有风力,它是不会飞出去的。 下面通过一个理想电梯例子来说明这个关节的作用。在前面的例子上,添加下面的物体,如下图:在这里添加两个...原创 2019-01-22 14:33:13 · 716 阅读 · 0 评论 -
游戏制作之路(42)铰链关节
前面学习了物理材质的作用,可以看到那个球在桌面弹跳起来,如果这个球撞击到门会怎么样呢?像日常生活里,如果一个足球碰到活动的门,肯定会打开门。如果让你在unity里模拟门这个现象又怎么样来实现呢?带着这个问题,下面就来实现这个动作,这个例子里要使用关节(joint)组件,这里实现门的关键是使用铰链关节(hinge joint)。 在前面的例子之上,再来增加一个门,如下图:按这样大小、...原创 2019-01-22 12:02:07 · 1393 阅读 · 1 评论 -
游戏制作之路(32)创建自定义的界面样式管理
前面学习了使用GUIStyle来自定义按钮,就可以显示各种各样的按钮了,但是采用这种方式有时候不方便管理整个程序,或者不同游戏之间的按钮。比如你定义了一套公司的游戏风格的界面,想在不同的游戏之间进行使用,这时一个一个地拷贝代码,再去设置属性,是否感觉很傻,对了,还有一个更聪明的办法,就是把所有按钮、文本、滚动条都放到一起管理,这样就很方便在不同项目之间进行共享了,这时就需要使用到GUISkin类,...原创 2018-12-24 15:22:51 · 773 阅读 · 0 评论 -
游戏制作之路(31)创建自定义的按钮
在前面学习了怎么样创建按钮,也学习了显示纯文本,不过这些都是使用缺省的模式来显示的,但是游戏开发人员常常使用自定义的按钮比较多,因为它显示多样化,同样可以进行换图美化,也可以符合使用者的个性定义化。因此,这次来学习使用GUIStyle组件来定义按钮的样式。比如创建如下图的按钮:这个按钮背景是使用一个蓝色图片,当鼠标在这个按钮上面时,就会显示如下:这时,就是unity3d根据按钮的...原创 2018-12-24 14:41:55 · 688 阅读 · 0 评论 -
游戏制作之路(14)模拟子弹的制作
前面介绍对角色的控制,以及对视野的控制,接着下来需要为这个游戏更加有趣一点,就是要发射子弹出去,把挡着角色的物体破坏掉,或者说把游戏里的NPC打死,让每个过上英雄的美梦,当成一个救世主,当成一个现代的花木兰。那么你会问怎么样来添加子弹到这个游戏里呢?先来认识一个问题,子弹也是一个物体,也是一个游戏物体,为了简单起见,我们使用一个球体来当作子弹,当这个子弹碰到其它物体时,就要爆炸,接着子弹就消失了。...原创 2018-09-03 10:36:29 · 1378 阅读 · 0 评论 -
游戏制作之路(13)限制眼睛上下转动的范围
通过前面介绍,已经实现第三人称的角色控制,但有一个问题,当你上下地查看时,可以把整个场景翻转过来,如下图:这种场景,往往我们是不希望出现的,毕竟不是在开飞机。那么怎么办呢?这时,我们就要想办法了,控制头的旋转角度,不要让它360度地旋转了。如果我们要限制在-80到80度之间,那么怎么样来实现呢?估计你首先会想到使用if语句来判断,其实可以使用Mathf.Clamp函数实现同样的功能。可以查...原创 2018-09-02 15:53:49 · 1516 阅读 · 0 评论 -
游戏制作之路(8)游戏对象的父子关系
前面介绍碰撞原理,因此角色可以自由运动了,但是它还缺少一个技能,就是旋转,比如一个人走到墙边上,他会旋转一个方向,再进行行走。但是目前我们这个场景里的角色是一个小容器,完全是对称的,不管你怎么样旋转,也看不出来。因此得向这个角色增加一个鼻子,让这个角色具有分辨方向的能力。接着下来,再在场景里添加一个小的立方体:接着下来,需要把这个nose拖到character里面去,这样就形成一个父子关...原创 2018-08-30 15:40:21 · 1339 阅读 · 0 评论 -
游戏制作之路(12)实现摄像头跟随角色运动
前面学习角色眼睛上下转动,其实就是增加了一个虚拟的游戏对象,看不见的物品,不过角色转动时,玩家并不能跟着角色去查看更多的内容,本文就来实现这个功能,让玩家跟着角色左右旋转和眼睛上下转动来查看整个场景。其实这个功能实现起来非常简单,只要把main camera拖动到head下面,就会跟着整个角色进行转动和运动了,如下图:先把nose的位置修改一下,设置为(0,0, 0.5)的值,接着下来需要...原创 2018-09-02 11:34:31 · 2031 阅读 · 0 评论 -
游戏制作之路(7)角色与物品之间的碰撞
在前面介绍了地面与角色的关系,通过坐标就可以解决角色不入地的问题。但是如果在场景里有多个物器,比如桌子、台等等,这些物品大小不一样,因此距离也不一样,就不能通过固定设置来达到穿墙而过了,那么怎么办呢?本文就来解决这个问题,在场景里创建几个立方体,按如下摆放:创建的物体,都需要把y轴的坐标设置为1,这时就刚刚好在地面之上。其它坐标随意设置即可,大体看起来像上图这样就可以。当然,它的大小你也可...原创 2018-08-30 11:51:18 · 1920 阅读 · 0 评论