UE4 技能和人物关联的初步设计 AND 技能征召的猜测

156 阅读2分钟

前言

刚开始打算把技能做一个工厂模式,包装到人物中
之后又把动画蓝图和技能重新搞了一下,在人物中做了个分配器
就有了初步的设计

正文

技能的包装

先把做的技能和技能工厂绑定
classDiagram
MasterSkill <|-- S_Shoot
MasterSkill <|-- S_Hit
MasterSkill: +GetSkill()
MasterSkill: +Owner Character
class S_Shoot{
+GetSkill();
+ShootOne();
+ShootEvent();
+ChangeState();
}
class S_Hit{
+GetSkill();
+Hit();
+Change State();
}
这是目前考虑的调用参数
classDiagram
class GetSkill{
GetSkill: +Actor HitActor
GetSkill: +Vector Mouse
}

人物和创建技能

 在初步构思中人物应该是持有技能的功能,目前把技能创建步骤直接放在人物开始事件中
 
graph TD
人物创建 --> 遍历持有技能
遍历持有技能 --> 创建对应技能
创建对应技能 --> 技能绑定并放入人物技能BOX中
目前直接在人物中进行技能赋值,可以用结构体进行赋值,便于在内容游览器进行修改

image.png

Master人物初步设计

classDiagram
class MasterCharacter{
+S_Master[] SkillClassBox;
+Actor[] SkillBox 
+PlayController PlayController;
+ UseSkill()
+Delegate ChangeState 
}

创建技能

image.png

调用技能

    classDiagram
    UseSkill <|-- GetSkill
    class UseSkill{
    +Interget Index;
    +Vector Mouse;
    +Acter HitActor;
    }
    class GetSkill{
    GetSkill: +Actor HitActor
    GetSkill: +Vector Mouse
    }

image.png

 这里直接在UseSkill中处理Index 

PlayController调用人物技能

image.png

这样就做好了技能的包装和引用 
目前问题是index和技能数组中所处位置绑定
之后打算做个通过技能ID直接创建

技能和动画蓝图

目前通过创建子类Skill 继承父类的GetSkill()并且附加特定的需求
如人物的攻击静止 转向攻击方向等 
比较重要的是进行人物属性的设置
可以影响绑定的动画蓝图

image.png

动画蓝图中的通知

通过人物属性的变化 动画蓝图的导管获取变化 使得人物调用对应的动画

image.png

之后在人物播放到一定程度后加入通知 就能在动画中事件进行详细设计

image.png

这里主要改动的是人物属性,同时调用人物属性变化事件委托

image.png

在技能中绑定人物属性变化事件委托

技能动画播放抬手结束后 就正式启用作用 
像是生成发射子弹 或是改变人物属性样式
这时候绑定上委托 可以通过人物属性进行下一步操作
比如这里Shoot因为抬手结束改为TURE 通过判断后就会发射子弹

image.png

猜测技能征召实现

在DOTA2中的技能征召模式 像是选了非自有技能后
英雄会出现使用技能时出现无抬手动画,导致人物僵直一段时间
其实和这里没有设计对应动画类似
我觉得它是通过Delay的方式进行后续技能的实施 不同于这里的调用方法
跳过动画蓝图对人物属性的改变 达到使用技能的通用性

结尾

看我做的冰球

image.png