文/枸杞忧天

总想在工作之余写一些小玩具陶冶一下情操,因此从此篇开始,预计花费三、四次的时间,记录一个小游戏从无到有、再到不能玩的搭建过程。

游戏概述

运行这个小游戏将创建出一个温馨、和谐的世界,这个世界里着很多美丽的城市,每个城市周围又辅有若干可供英雄们探索的神秘野外;英雄们会根据自身属性选择探索目标,完全不用你操心!伴随着它们探索的深入,将谱写出一幕幕可歌可泣、催人汗下的传奇故事。

而你,作为游戏的绝对主角,将在这个世界中扮演一个十分重要的角色:一个没有任何主观能动性的看客。

由于写到这时还没开始构建项目,因此仅用我精湛的画技描绘一下游戏运行起来的样子:

133425qpprw6117r9xp7r1.png
结构实在太简单了,就不做赘述了。

正文

一、构建基本场景

1、新建场景,并保存在场景文件夹中。

133425ctabsb88dj06oo8g.png
2、新建一个Cube作为整个世界的地面,尽量大点。

133425cczr0roz1khhh1ri.png
3、新建一个Cube作为City,一个Cube作为Field,还有一个Capsule做为英雄。

133426cazg4jm1mgxhqqu9.png
万事俱备。

微调视角到合适的角度,就会惊喜的发现一个美轮美奂的游戏世界已经呈现在了我们眼前。

133426lrxvvvwwwx6bnwv8.png
真是完美。

133427eqckdc57iizr5osv.png
5、将材质球直接拖到各个对象上面,专业点讲就是:give them some colors to see see.

133427e12lc891fzh9ga8f.png
稍稍复制一些对象,预览一下整体效果:

133428e02vmlkd0fx2v2f1.png
漂亮,画质上升了不止一个档次,让人看了就想赶快充钱。可惜我们没有商店这个功能。

二、整理场景

浏览一下Hierarchy窗口下的场景结构,可以用四个字来形容:“整齐而有规律,简单而不简约”。

133428obgbe4nvwnh2hesg.png
但是我们不能满足于此,于是简单调整一下结构,新增一些节点管理它们吧。

1、新增管理节点,并重置Transform的空间属性

133429fdze1353mm50p3m5.png
新建好管理节点后,将之前复制的对象拖到对应的节点下,我们发现果然清爽多了,当然这么做最重要的原因是:会让你看起来很专业。

至此,我们的游戏开发已经接近了尾声。

逗你呢,当然不可能,之前的对象都是直接复制出来的,这似乎有一点点不专业。我们更希望在游戏启动时或运行中,城市、野外和英雄可以动态随机的出现在这个世界里,因此我们需要做两件事:

① 分别为城市、野外、英雄准备好一份Prefab,用来动态实例化出更多的游戏对象。

② 添加一个简单的管理器来实施实例化及管理实例化后的游戏对象。

因此:

2、移除无用的对象,创建城市、野外、英雄的Prefab

133429fg4vdvz553v41437.png
将多余对象删除,仅保存一个最可爱的作为prefab,恢复场景的干净整洁。

3、建立世界管理器

写代码最忌讳的是没有想明白就开始动手,所以在写这个管理器之前我们先梳理一下对它的需求:

① 它要看起来要很专业。

② 可以动态、随机生成一定数量的城市,野外。

③ 城市尽量要摆的分散,避免过分的集中,尽量均匀分布。

④ 野外围绕城市摆放,这样建立在均匀分布的城市基础上,它们也会相对均匀,同时也更合理些。

针对以上需求,我们只实现一个简单版的世界管理器即可,它的接口及主要功能如下:

133430i01zb2kfb00bbkq1.png
在场景中建立一个世界管理器对象,贴上这个脚本并修改Inspector面板上的参数:

133434mnkl48pnm5bzmnnq.png
因此在在计算野外位置时,需要进行空间转换:

133436foxsfzpbnn7w9xww.jpg
小结

此回对小游戏的样子进行了简单描述、绘制了草图,在打消了放弃的念头后创建了游戏项目,并添加了随机码放城市、野外的功能。

下回预计将把英雄引入世界,可自主探索周围的世界,具体的我也不知道会弄成啥样,因为还没开始。

附上项目的GitHub位置,有兴趣可以去取:

https://github.com/elsong823/HalfWorld

最后,希望自己能坚持做完这件简单的事情,下回见。

via:Gad

锐亚教育

锐亚教育,游戏开发论坛|游戏制作人|游戏策划|游戏开发|独立游戏|游戏产业|游戏研发|游戏运营| unity|unity3d|unity3d官网|unity3d 教程|金融帝国3|8k8k8k|mcafee8.5i|游戏蛮牛|蛮牛 unity|蛮牛