DH-SRPG 五:单位及单位组建
Unit是重要的组成部分。在这个项目中Unit由多个部分组成

Action:单位的动作,如攻击与移动等动作在这里面定义
Property:单位的属性,如生命值与行动点在这里面定义
Skill:单位的技能由这个节点管理
ShowAction:这个用于在单位行动时显示,来突显当前的行动单位
Icon:单位的人物图像
UI:这个只在由玩家控制时有效,显示操作面板,通过UI可以与Action、Skill等节点交互。
Unit.gd
属性与信号
主要的方法
在 _ready 方法中,绑定了UI发出的信号的连接,这些连接大部分并不由自己处理,而是分别交由 Action、Skill处理。
在行动开始与结束时都会设置自己的状态并通知控制器自己开始或结束行动。对于AI来说,通知是很有用的,对于玩家没用,当然,如果要写类似于让单位在行动开始时HP恢复1的特殊玩家效果则可以通过重写控制器的 unit_start_action 方法来实现。
UnitAction
处理行动的节点。
攻击与移动的进行申请
组件之间是有依赖的,如上面的两个方法依赖unit的property节点提供的属性来判断自己是否可以攻击。如果可以的话会隐藏掉UI(因为通常来说这时玩家才会调用到的方法,所以需要隐藏玩家操作的UI)并发出信号,上面这两个信号会由UnitManage处理。
move_conduct:移动的执行。这个方法会消耗Unit的行动点与移动点,同时在移动时会调用图块的回调来触发一些图块的效果,比如地刺,会对经过的单位造成1点伤害。这个方法一般由Map节点调用(玩家与AI都是)还有就是会调用技能,这会调用 auto类型的技能,也就是被动,通过这个调用可以实现类似于“移动两格生命值+1”之类的效果。
attack_conduct:攻击的执行。与上面的方法一样会消耗行动点与攻击机会,同时会调用两次auto技能,分别是“攻击开始”与“攻击结束”。当前有一个“双重攻击”的技能在攻击结束时触发。通过这两个调用可以实现“攻击时让AP提升3点”或“攻击附带额外1点伤害”之类的效果。
ui的逻辑与之前的Main.tscn介绍的逻辑差不多。Property是单纯的属性管理节点而UnitSkill节点并没有开发过多。所以这三样就略过了。因为目前还没有支持联机的功能,所以写得很简略在后续添加联机功能时更改应该会比较大,倒是后再发新的吧。
致歉:因为项目的更新随时都有可能会破坏原有的代码,您在看到此文时它可能已经不是最新的了,请以现在项目的具体情况为准。
欢迎大家给项目提Issues
项目地址:https://gitee.com/DH-DoveG/dh-srpg-demo