当前位置:首页 > 资讯 > > 正文

DH-SRPG 六:技能与效果实现

来源:哔哩哔哩    时间:2023-07-28 20:40:38

好久不见。说起来战棋游戏里一般都有技能


(资料图片仅供参考)

最近实现了技能的框架并更新了SelectManage。虽然还没有固定下来,但是然做了几个技能来测试,感觉还不错。现在来介绍一下,希望能给大家带来一些帮助。

技能框架:

首先技能与其它游戏一样分为两个大类:主动技能与被动技能,它们分别有两个调用的入口:

主动技能:start

被动技能:auto

这两个方法都接收一个字典作为参数。

对于主动技能,因为是手动调用的,所以参数固定,而被动技能因为是在多种情况下都会调用所以参数内容会有所不同,以下是目前的所有auto有的技能调用的参数:

auto 参数一般有以下参数

"class": 大的种类"type": 小的种类"state": 状态"target": 目标,应该是一个对象"target_position": 目标位置

战斗时触发

"class": "ATTACK" # 表示攻击"type": "ordinary" # 表示伤害类型"state": "START" # 表示攻击状态,如果是攻击结束时就是 "END""target": <unit> # 被攻击的对象"harm": <int> # 伤害值

使用例:/game/skills/s_double_attack_

该例子使用了这个参数来在攻击结束时进行一次附加攻击:

可以看到,在auto方法中判断了参数来确定是在攻击结束并且满足cost时调用。

移动时触发

"class": "MOVE"

"start_position": Vector2 # 出发坐标

"target_position": Vector2 # 目的地

"start_cell": 触发的图块信息

"target_cell": 目的地的图块信息,可以利用这个来判别目标区域,实现类似于“走到草地上时hp+1”的技能

"path": 路径数组

"index": 当前的下标

暂时没有使用例子,不过感兴趣可以参考其它技能来试着做一个类似于迅捷步伐的效果:“移动时充能,每移动一格充能+1,达到6时会在强化下一次攻击并为自己回复一定生命值。”

这应该是一个auto类型的效果,并判断传入参数的class是不是MOVE,是就index+1,然后如果达到目标值就设置一个key值,然后auto在key为true时再检测class是不是ATTACK且是STATE,这里可以增加额外效果,当然,这个auto应该还检测ATTACK的END,如果需要在攻击结束后根据实际照成的伤害来恢复生命值的话。

回合结束时调用"class": "ROUND_END""user": 技能持有者,"round_number": 回合数

使用例:/game/skills/s_rolling_currrent_attack_

这是一个捏他VN的技能:翻滚并强化下一次攻击,因为强化攻击拥有时效性所以有用到这个参数,以下是部分代码实现:

在技能时效期间照成了4点伤害,而技能过期后回复成了3点伤害

SelectManage更新:

为了能更加好的配合Skill,做了一些更新。

现在加入了”层级“的概念:

layer里增加了许多回调,也得益于回调,很多效果得以顺利实现。来看一下用到了clear_callable, move_callable, callable回调的技能例子:/game/skills/s_dark_

虽然说技能还没有确定下来,但是已经初见形状了。下一个目标是制作局域网联机功能,这样就完全从之前的旧项目迁移过来了,感谢您的关注。

致歉:因为项目的更新随时都有可能会破坏原有的代码,您在看到此文时它可能已经不是最新的了,请以现在项目的具体情况为准。欢迎大家给项目提Issues项目地址:/DH-DoveG/dh-srpg-demo

关键词:

精心推荐

X 关闭

X 关闭