找回密码
 注册帐号

扫一扫,访问微社区

枸杞忧天 从零点五开始用Unity做半个2D战棋小游戏(四)

1
回复
1167
查看
[ 复制链接 ]
4四处流浪
301/500
排名
34884
昨日变化

17

主题

25

帖子

301

积分

Rank: 4

UID
73054
好友
3
蛮牛币
338
威望
0
注册时间
2015-2-4
在线时间
37 小时
最后登录
2019-5-1

专栏作家

2019-1-1 21:59:14 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 elsong 于 2019-1-1 22:00 编辑

元旦快乐。

这是第20篇与游戏开发有关的文章。

|  写在最前
这次想要一个简单且传统的战棋小游戏,大概的玩法是:2D世界里创建一张由六边形地块组成的战斗地图,敌我双方依据体力在地图上轮流行动并向对方发动攻击,先消灭掉所有敌人的一方将获得胜利。

预计将分为以下几篇(未完成前可能会调整...):

1、创建战场(已完成)
根据预定尺寸生成战场地图,并随机一些障碍物。

2、添加地图功能 (已完成)
实现战场格子点击反馈,地图导航及范围选定。

3、添加对战双方(已完成)
向战场中添加作战单位,作战单位轮流行动,可进行移动、攻击。

4、加入玩家控制
玩家可控制一个战斗单位,手动选择移动目标及攻击单位。

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

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

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

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

本次的主题是:加入玩家控制

项目代码会上传至我的Github:https://github.com/elsong823/HalfSLG,有兴趣的同学请自取。

|  目标
分配一个角色给玩家手动操作,每回合玩家有一次行动机会,行动的规则是:可从移动攻击待命中选择一次操作,当玩家选择移动后,还可选择一次攻击或待命的操作;玩家也可以不进行移动直接选择攻击或待命,这也会结束当前行动回合。

实现后的效果如下图:



这次要做的非常少,因为之前已经写好了战斗逻辑,只需要把手动操作加入即可。

|  准备工作
首先,为战斗单位设置一个是否为手动操作的标记。


其次,为战斗单位设定一个手动操作状态,标记这个战斗单位是否可以移动、攻击。


最后,新增一种新的战斗单位操作状态动作,分别是等待玩家操作状态及等待手动操作的动作。





当轮到玩家操作时,战斗的单位会显示绿色边框。

|  手动操作的逻辑
大概思路是:战场维护一个战斗单位的行动队列,每当轮到一个单位行动时,如果这个单位是自动操作的,那么它会自己决定目标移动并攻击,上回我们将数据与渲染进行了分离,因此它只是产生了一次行动数据(Action)。
如果这个单位是手动操作的,那它会产生一个等待手动输入的行动数据,同时返回等待玩家操作状态。

当战场发现自己收到了一个等待玩家操作的状态,就明白其实刚才的家伙并没有生成任何有意义的战斗数据,因此它必须通知自己的渲染器(那个用来显示的模块,上回我们介绍过):嘿,帮我问问他到底想干嘛?

渲染器通过UI与玩家进行交互,获得玩家要移动、攻击或是待命等“有用”的战斗信息后,再回头通知战场“这个家伙已经行动过了”,战场再让下一个单位行动。

简易的行动流程图

由于下一回我们才会加入战场UI,这里我们先用Unity自带的GUI代替。



用GUI显示一个列表,接收玩家的操作

|  写在最后
2018年瞬间就过去了,回想年初时豪情万丈列下的“2018年必做之十大事”,如今...额...都不敢看清单上有什么...


过去的就让他过去吧...2019年,请自己继续加油吧。

初心易得,始终难求。

下回见。
参与人数 1鲜花 +5 收起 理由
hbg304802246 + 5

查看全部评分总评分 : 鲜花 +5

回复

使用道具 举报

6蛮牛粉丝
1084/1500
排名
3054
昨日变化

1

主题

168

帖子

1084

积分

Rank: 6Rank: 6Rank: 6

UID
139214
好友
0
蛮牛币
1624
威望
0
注册时间
2016-3-12
在线时间
431 小时
最后登录
2019-3-7
2019-1-7 17:19:05 显示全部楼层
学习一下。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则