使用Unity从零点五开始做半个不能玩的小游戏(一)

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

游戏概述

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

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

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


哎?怎么感觉画完草图后,忽然连我自己都不想写下去了呢……

但是没办法,自己画的饼,跪着也要烙完。

预计内容安排:

第一回 描述游戏玩法、基本架构,生成随机地图,周围探索点。

第二回 构建英雄并可开始自动探索世界。

第三回 英雄与城市、探索点、以及其他英雄的互动 。

第四回 添加UI来增强游戏的表现力,并对全文做出总结。

一些解释:

之所以叫从零点五开始,是因为我认为你至少应该具备以下能力后才开始看这篇文章:

1、会新建场景。

2、会创建对象。

3、会创建Prefab。

4、会写简单的C#脚本。

因为本文并不会对很基础的操作做详尽说明,比如:现在我们用鼠标轻轻点中这个对象,然后轻轻将它拖向文件夹,注意我拖了拖了拖了……唉!唉唉?!成功了?成功了!这个蓝色的就是预制体!我们成功了……
 


当然,除了你应该有点基础外,你最好不要具备很高的Unity水平,因为这样我就不能忽悠你了。

游戏结构

游戏的玩法已经在上文进行了描述,现在来看一下游戏结构及各游戏元素间的关系。
 


结构实在太简单了,就不做赘述了。

正文

一、构建基本场景

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


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


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


万事俱备。

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


真是完美。
 

“小当家,这当真是3A级别的画质啊!”


但是为了能稍加区别各种对象,让游戏感觉尽可能的再好一些,我们决定加入不同的颜色用来区分对象。

4、新建一些简单的颜色材质球
 


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


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


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

二、整理场景

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


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

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


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

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

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

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

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

因此:

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


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

3、建立世界管理器

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

① 它要看起来要很专业。

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

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

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

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


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


简单总结一下这个世界管理器的关键功能:

① 给定地图范围、城市数量、城市间的密度系数,在随机位置生成城市(蓝色方块)。

② 给定野外生成半径、野外数量、野外密度系数,围绕每一个城市随机生成野外(绿色方块)。

实际运行起来感觉像这样。

随机码放城市:
 


围绕城市随机码放野外:
 


为了显示野外和城市的关系,用黄色线段将城市和野外进行连接,Scene视图下Gizmos显示为:
 


部分关键代码

1、在随机放置城市和野外时,采用的是非常简单的咣咣咣重复试验的方式:
 


2、尽管城市和野外的逻辑关系是:野外围绕城市,但实际层级关系它们是分数在不同的节点之下的:
 


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


小结

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



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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值