GameRes游资网

 找回密码
 立即注册

从零点五开始用Unity做半个2D战棋小游戏(一)

发布者: D小游 | 发布时间: 2018-12-3 14:24| 评论数: 0

游戏程序
平台类型:  
程序设计:  
编程语言:  
引擎/SDK:  
文/枸杞忧天

这次想要做的一个小游戏,或者说一个小Demo,其实是一个简单且传统的战棋战斗场景。初步的设计是:在2D世界里创建一张由六边形地块组成的战斗地图,敌我双方依据体力在地图上轮流行动并向对方发动攻击,先消灭掉所有敌人的一方将获得胜利。

这一辑将比上一辑的内容更简单,但完成后会是一个功能较完整且可以玩耍的Demo。

我使用的Unity版本是2018.2.7,但是其实并没有用到2018的任何新功能。

项目代码会上传至我的Github 中,有兴趣的同学请(点击文末阅读原文)自取。

预计将分为以下几篇:

1、创建战场

根据预定尺寸生成战场地图,并随机一些障碍物。

2、添加对战双方

向战场中添加作战单位,作战单位可被点选,并进行移动。

3、战场逻辑

作战双方按照顺序依次行动,可进行移动、攻击。

4、添加战场UI

添加可以随时显示战况的Hud、为作战单位添加血条等。

5、扩展作战单位

丰富作战单位的类型,添加职业,并加入若干不同类型的技能。

6、扩展战场地图

丰富战场地图,加入地形及道具等元素。

7、规范战斗配置

可以通过规范化的数据结构配置战场、职业、技能、道具等。

一、创建战场

本次的主题是创建战场。

|  目标

生成一个规定尺寸的战场,战场上的格子均为六边形,并且暂定两种格子类型:普通格子和障碍格子。

|  在开始之前我做了以下事情

1.创建了新的工程。

2.新建场景并保存在场景文件夹下。

3.删除默认创建的平行光,调整场景光照设置,弃用了天空盒等。

4.将相机调整为正交相机。

因为是从零点五开始系列,认为读者有一定的Unity引擎使用基础,就不对这些操作进行介绍了。

|  创建战场地图

我没有采用把数据和显示捆绑在一起的做法,而是将数据和显示分离。

我的思路是用一个战斗创建器来创建战斗,一场完整的战斗信息至少应包含地图及对战双方的信息。而Unity搭建的战斗场景则可以理解为一场战斗的显示器。

|  数据部分(主要)

战斗数据:地图尺寸,包含所有格子的二维数组。

格子数据:格子类型,所在行列,所在空间坐标。

1.png

|  显示部分(主要)

战场:一个用于组织所有格子对象的节点对象。

格子对象:一个能显示六边形瓦片的2D渲染器,并根据格子类型改变颜色。

2.png

当需要将战斗表现出来时,需要将以上数据装入一个用于显示的“战场”,这个战场就是在Unity世界里创建的。

3.png

|  在Unity中创建战场

目前战场的结构还非常简单,只需要一个组织格子单位的节点。

4.png

|  创建格子

创建一个格子脚本,并挂在一个新创建的空对象上。

5.png

为这个空对象添加一个子对象,称之为瓦片,用来显示一个六边形。

因为这里我只想做一个2D的Demo,因此我们只需要一个SpriteRenderer组件即可。
6.png


使用预先准备的一张六边形图片作为地块显示,一个格子对象就做好了。

7.png

为了区分普通和障碍,暂定普通格子为白色,障碍格子为灰色。

8.png

战场加载后节点的状态。

|  部分代码

9.jpg

铺设普通格子。

10.jpg

随机放一些障碍格子。

11.jpg

战场根据格子信息,显示格子。

12.png

格子根据不同类型显示不同颜色。

13.gif

初始随机多张地图,并切换查看。

至此,难度最低的第一篇已经完成。

来源: 游戏扶持by腾讯游戏学院
原地址:https://mp.weixin.qq.com/s/KPw5cihN4Sgpqoi86FAPkw


最新评论

  • App Store力荐,Supercell刚上线的第5款游
  • 游戏开发中最常见的5个错误
  • 王信文:穿越那座绝望山谷
  • 请不要让Roguelike成为独立游戏的遮羞布
  • 丁磊打碟了,丁磊养猪了 然而,丁磊没有人
  • IGDA:2018,游戏最好的时代,也是最糟糕的

小黑屋|稿件投递|广告合作|关于本站|GameRes游资网 ( 闽ICP备05005107-1 )

GMT+8, 2018-12-17 08:30

快速回复 返回顶部 返回列表