游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2900|回复: 0

用Unity做半个2D战棋小游戏(四):加入玩家控制

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2019-3-14 14:56:06 | 显示全部楼层 |阅读模式
写在最前

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

预计将分为以下几篇:

1、创建战场

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

2、添加战场地图功能

实现战场格子点击反馈,地图导航及范围选定。

3、添加对战双方

向战场中添加作战单位,作战单位按照一定规则轮流行动,可进行移动、攻击等。

4、加入玩家控制

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

5、添加常用的界面

建立界面管理器,加入一些常用的界面。

6、添加常用的战场显示

为战斗单位添加血条,加入伤害文字显示。

7、扩展作战单位

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

8、扩展战场地图

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

9、规范战斗配置

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

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

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

目标

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

实现后的效果如下图:

1.gif


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

准备工作

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

2.png


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

3.png


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

4.png


5.png


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

手动操作的逻辑

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

如果这个单位是手动操作的,那它会产生一个等待手动输入的行动数据,同时返回等待玩家操作状态。

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

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

6.png

简易的行动流程图


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

7.png

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


写在最后

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

8.jpg


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

初心易得,始终难求。

下回见。


作者:/zt枸杞忧天
来源:腾讯游戏学院
原地址:http://gad.qq.com/article/detail/288998


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-4-26 21:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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