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

发表于2019-04-25
评论5 7.6k浏览

好久不见。

 

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

 

| 写在最前

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

 

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

 

1、创建战场(已完成)

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

 

2、添加地图功能 (已完成)

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

 

3、添加对战双方(已完成)

向战场中添加作战单位,作战单位轮流行动,可进行移动、攻击。

 

4、加入玩家控制(已完成)

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

 

5、添加常用的界面(已完成)

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

 

6、添加常用的战场显示(已完成)

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

 

7、扩展作战单位(已完成)

丰富战斗元素,加入并实现手动释放不同类型的技能。

 

8、加入AI系统(上)(已完成)

建立超级简单的AI系统。

 

9、加入AI系统(中)(已完成)

调整AI系统的决策方式。

 

10、加入AI系统(下)(已完成)

总结AI系统。

 

11、扩展战场地图

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

 

12、规范战斗配置

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

 

本次的主题是:丰富战场地图,加入地形及道具元素。


项目使用的Unity版本为:Unity2018.3.0f2

 

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


 

| 本次目标

为地图中的格子附带一些属性,当战斗单位站在这些格子上时,对应的属性(如:攻击,防御,攻击范围)将会增加。

 

DLMSthsJlblQGqLDLaCg.png

三种携带属性的格子,非常直观


增加一些可以在地图中使用的道具,道具随机散落在一些格子上,战斗单位移动到这些格子上时,会自动拾取道具。

 

HPdzuYS534O7A4iAK4Ng.png

地图中随机放置了一些道具


需要提前声明的是:这里没有实现AI决策时考虑地图格子属性,及使用道具的功能。

 

| 地图格子的属性

战场中格子带有属性,是游戏中非常常见的设计,这里只实现了以下三种最简单的属性。

 

pbb44Hn6yM6VLMm0Xavl.png

红色:增加攻击力的格子

 

Sb3QzQ6YKK0xUkTJ5d3I.png

绿色:增加防御力的格子

 

cSibXZzdkH70QwXWcj54.png

黄色:增加攻击范围的格子

 

这其中,攻击、防御的格子更加简单,只是在做战斗计算时把格子属性考虑进去即可;我这里非常粗暴的把它封在了获取战斗单位基础属性的接口中。

 

较为麻烦一些的是增加攻击范围的格子,不仅要考虑对“技能释放范围”的影响,还需要考虑对“以自身为中心技能”的覆盖范围的影响。

 

| 战场道具

目前仅做了两种道具。

 

生命药水:使用后恢复一定生命值。

3PmNsMjNzqgKVOM00a2y.png

生命药水及属性

 

能量药水:使用后增加一定能量值。

pYRTQ8dNIGccgfWjWz5f.png

能量药水及属性

 

需要声明的是,这些精美的道具图标并非是从某3A大作中扒出来的,它们都是我个人纯手工绘制的。

 

玛瑙色的神秘液体浅眠在晶莹剔透的水晶瓶中,轻轻摇晃把它们唤醒后,竟还散发出些许淡淡的果香;让人只想往敌人的刀口上撞,好给自己找点理由,堂而皇之的品尝它们。

 

| 道具使用规则

我采用的规则是:使用道具使用技能相同,使用后即表示该回合结束。

 

VwsSNmruhRgXlfYxo8FQ.gif

使用生命药水

 

VOrLVk3xlRCsDmUJoTHH.gif

使用能量药水

 

由于我们之前已经写好了战斗事件的播放机制,所以这里只需要增加一个使用道具的事件,加入到战斗事件队列,然后播放即可,并没有什么难度。

 

| 其他

还有一些不太重要的小事。

 

调整战斗操作栏

在操作栏新增一个道具按钮,点击可以弹出持有的道具,方便操作者使用道具。

 

7658QWVHKSjqXexqcBd7.png

通过操作栏使用道具

 

简易背包

新增了一个超级简单的背包,只实现增加减少道具的基础功能即可,这里就不赘述了。

 

| 写在最后

至此,扩展战场地图篇就介绍到这了。

 

下一篇,也是最后一篇,将会对游戏配置进行整理,并且做一个抒情。

 

愿不忘初心。

 

下回见。

 

非常感谢您能读到这里,详细的代码可以移步Github(https://github.com/elsong823/HalfSLG)下载。

 

文章会在我的公众号 偶尔学学Unity 中不定期更新,欢迎关注,谢谢。

Hh1tT9clHusPS4AopvZc.jpg


 

  • 允许他人重新传播作品,但他人重新传播时必须在所使用作品的正文开头的显著位置,注明用户的姓名、来源及其采用的知识共享协议,并与该作品在磨坊上的原发地址建立链接
  • 可对作品重新编排、修改、节选或者以作品为基础进行创作和发布
  • 不可将作品进行商业性使用
  • 需在以作品基础上创作的演绎作品上适用相同类型的知识共享许可条款

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: