【1】准备工作
0.官网文档:https://basefount.feishu.cn/wiki/XTyhw04UXiuZ1Ikvdyac79oJnjc
1.官网下载MiarmyForUnreal插件:https://ue.miarmy.com/zh-Hans/
2.将插件解压到项目或引擎Plugins目录
3.测试插件是否可用:菜单栏-Miarmy-Miarmy Ready!,并查看关卡内是否生成了MiarmyGlobalActorSet对象。
4.虚幻商城下载资源插件并添加到项目:BattleWizardPolyart
【2】基础设置
1.选择MiarmyGloabActorSet物体,找到Global Settings-Miarmy Global Frame帧设置,填写500。即群集的解算最大帧,超过则不解算。
【3】创建代理及动画处理(骨骼网格体)
1.选择UE工程的 02文件夹,菜单栏-Miarmy-Create Original Agent(Mass AI),会在文件夹下生成MassAI_Agent蓝图类对象。
2.双击打开该蓝图:切花到Viewport视口,选择骨骼网格体组件,为其Mesh-SkeletalMeshAsset指定骨骼网格体资源。调整朝向和位置。
3.选中刚才的骨骼网格体资源对象-右键-为其创建动画蓝图:Create-Anim Blueprint。将其指定给步骤2中,骨骼网格体组件的Animation-AnimClass属性。
4.双击打开动画蓝图:
4.1.修改其父类为:MiarmyAnimInstance。
4.2.动画图表中,右键-创建Miarmy AnimSequence Group Node节点,将其连接到Output Pose节点。
4.3.在步骤4.2节点的Play Anim Name属性上右键-Binding选择MiarmyPlayAnim
在步骤4.2节点的Play Anim Speed属性上右键-Binding选择MiarmyPlaySpeed
4.4.选择步骤4.2节点,在其细节面板中的Entries数组中添加2个数组。分别为连个数组项指定Idle01Anim和WalkForwardAnim动画资源。
4.5.编译,保存。
5.将步骤1中创建的对象代理拖拽到关卡中,运行,查看效果。
【4】创建代理及动画处理(静态网格体)——顶点材质动画
1.选择一个骨骼网格体,双击打开,在其细节面板定位到其材质球资源位置,双击打开其材质球编辑器。
2.在其材质编辑器中:
2.1.新建材质节点:MakeMaterialAttributes
2.2.将原有材质属性连接到新节点
2.3.将原有StandardPolyartMat节点的属性Use Material Attributes进行勾选,并将步骤2.1的新节点连接到本节点。
2.4.应用,保存,不要关闭该编辑器,下一步要往里面粘贴顶点材质节点。
3.打开顶点动画工具:
3.1.菜单-Miarmy-Open Vertex Texture Wight
3.2.点击该界面的第一个按钮:[Copy Vertex Texture Shader]
3.3.打开步骤2.4界面,快捷键Ctrl + V,将顶点材质节点粘贴到该材质球。放在新属性节点和旧属性节点之间。并重新连接属性(首尾默认连接即可,另需将新节点连接到Switch顶点节点的False属性)。
3.4.材质编辑器界面下,应用,保存。
3.5.切换到顶点动画工具:
3.5.1.将骨骼网格体资源拖拽到Skeletal Mesh插槽。
3.5.2.在内容浏览器,选中骨骼网格体-右键-Create-Anim Composite-命名,创建动画合成对象,双击打开:将需要用到的动画片段拖拽到其合成面板。保存。
3.5.3.将动画合成对象拖拽到Anim Composite插槽。
3.5.4.在内容浏览器,选择一个合适的目标目录( 03文件夹)。然后,在该界面点击按钮[Create Vertex Texture],会在目标目录创建顶点动画相关资源。
3.5.5. 然后,在该界面点击按钮[Create Vertex Texture],等待计算完成。
3.5.6.将步骤3.5.4中生成的骨骼网格体拖拽到关卡,查看动画效果。
【5】配置数据资产
1.选择UE工程的 04文件夹,创建AI实体特性资产:菜单-Miarmy-Create Entity Trait
- ,创建Miarmy逻辑相关资产:空白位置-右键-Miscellaneous-Data Asset-DecisionPrimaryDataAsset-命名
【模式一:静态网格体】
3.双击打卡步骤1创建的资产,在Traits-Index[0]处,向静态网格体Meshes数组添加一个项,选择步骤3.5.4创建的静态顶点动画网格体。
,在Traits-Index[1]处,将Miarmy Play Action Type属性修改为:Static Mesh。
将Anim Composite属性指认为步骤3.5.4生成的动画合成资产。
将Entity Desision属性指认为步骤2创建的数据资产。
- 保存。
【模式二:骨骼网格体】
3.双击打开步骤1创建的资产,在Traits-Index[0]处,向High Res Template Actor属性指认步骤3.1创建的代理资产。
,在Traits-Index[1]处,将Miarmy Play Action Type属性修改为:Skeletal Mesh。
将Entity Desision属性指认为步骤2创建的数据资产。
4.保存。
【6】放置节点简介
1.选择UE工程的 05文件夹,菜单-Miarmy-Create Placement Node-命名。
2.将步骤5.1创建的资产复制到 05文件夹,重名为DA_SK_Mesh,即为MassAI骨骼网格体资产;
再复制一个,重名为DA_ST_Mesh,即为MassAI静态网格体资产。
步骤5.2创建的资产复制到 05文件夹,指认给DA_ST_Mesh,确保SK、ST分别拥有自己的逻辑资产。
3.将步骤1资产拖拽到关卡内,在其详情面板的Original Agent组:
属性Original Agent数组添加2项,分别将DA_SK_Mesh(设置为绿色)、DA_ST_Mesh(设置为红色)拖拽进插槽。
属性Generator Instance:选择This Miarmy Placement Location。
属性Row:10
属性Column:10
属性Distance:100
属性Origin Agent Percent:调整占比
4.预览分布效果,Save All,运行,查看实际效果。
【7】更多放置节点
1.将步骤6.1创建的资产,再次拖拽进关卡。
2.在其详情面板的Place Type属性:3D-Box 默认盒子
Circle 圆形
Custom 自定义
Triangle三角形
Arrow 箭头
【8】代理缩放属性
ScaleMin
ScaleMax
【9】移动逻辑
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]:
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Movement
Movement Type:ForwardOrBackward
Movement Mode:LocationOffset
Speed:2.0
3.保存,运行,查看效果。
【10】旋转逻辑
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]:
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Rotate
Rotate or Roll Type:LeftOrRight
Speed:2.0
3.保存,运行,查看效果。
【11】地面逻辑
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]:
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Movement
Movement Type:ForwardOrBackward
Movement Mode:LocationOffset
Speed:2.0
3.添加Miarmy Decisions数组元素:
Index[1]:
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Terrain Logic
Miarmy Terrain Type:Match of terrain
Match Rotation:勾选的话,角色会相对垂直于地面。否则保持直立状态。
Speed:2.0
3.保存,运行,查看效果。
【12】动画逻辑
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]:
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Action Playback
Miarmy Action Playback Type:play action??
Play Action by Name:【ST】填写实际动画合成资产内某个动画片段的名称即可 【SK】对应骨骼动画蓝图内实际动画片段的名称即可
添加子项:Index[1]:选择Action Playback
Miarmy Action Playback Type:change actions playback speed??
Appoint Action Speed:默认不勾选
Speed:1.0
【随机动画片段】:
添加子项:Index[0]:选择Action Playback
Miarmy Action Playback Type:play action??|??
Play Action by Names:
动画片段名称1
动画片段名称2
动画片段名称3
【随机动画速率】:
添加子项:Index[1]:选择Action Playback
Miarmy Action Playback Type:random actions playback speed(??.??)
Appoint Action Speed:默认不勾选
Min Value:0.1
Max Value:2.0
3.保存,运行,查看效果。
【13】材质逻辑
略(静态不支持)
【14】场景信息逻辑
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]:
Input Decision:条件逻辑
添加子项:Index[0]:选择SceneInfo
Scene Info Mode:current frame from ??to??
Min Value:0.0
Max Value:50.0
Output Decision:执行逻辑
添加子项:Index[0]:选择Movement
Movement Type:ForwardOrBackward
Movement Mode:LocationOffset
Speed:2.0
【15】ID逻辑
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]:
Input Decision:条件逻辑
添加子项:Index[0]:选择NoiseID
Noise IDMode:rand float based on my id from ??to??
Min Value:0.0
Max Value:50.0
Output Decision:执行逻辑
添加子项:Index[0]:选择Movement
Movement Type:ForwardOrBackward
Movement Mode:LocationOffset
Speed:2.0
Index[1]
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Show Attribue————————————————–>选择单个角色,可查看器属性信息,否则看不到。
【16】盒体逻辑
1.创建盒体:菜单-Miarmy-Create Bound-命名。
2.将其拖拽到关卡内,在其详情面板,调整Box Extent属性,调整其所在区域大小。
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]:
Input Decision:条件逻辑
添加子项:Index[0]:选择Bound
Bound Mode:I’m in bound
Is Bound:默认勾选,仅对盒内物体有作用 或不勾选,但需要填写Bound Id
Update Runtime Bound Box:默认不勾选,
Output Decision:执行逻辑
添加子项:Index[0]:选择Movement
Movement Type:ForwardOrBackward
Movement Mode:LocationOffset
Speed:2.0
【17】球体逻辑
1.创建球体:菜单-Miarmy-Create Spot-命名。
2.将其拖拽到关卡内。
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]:
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Spot Logic
Miarmy Spot Type:Follow Spot
Miarmy Spot Find Type:Appoint
Identify Spots:选择关卡内对应Spot对象
Is Distance:默认不勾选,勾选话,需要设定影响距离。
Speed:0.5
Index[1]:
Input Decision:条件逻辑
添加子项:Index[0]:选择Spot
Spot Mode:spot to me distance<??
Spots:选择关卡内对应的Spot对象
Distance:1000.0
Output Decision:执行逻辑
添加子项:Index[0]:选择Movement
Movement Type:ForwardOrBackward
Movement Mode:LocationOffset
Speed:2.0
【18】道路逻辑
1.创建球体:菜单-Miarmy-Create Road-命名。
2.将其拖拽到关卡内。实际上其为两条样条线,选中样条点进行拖拽移动位置,Alt + 拖拽:会创建新的样条点。分别调整两条样条线,形成一条路。
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]:
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Road Logic
Miarmy Road Type:follow road
Is ID:默认不勾选
Speed:0.5
Boundary Detection Range:0.25
Boundary Correction Speed:0.5
Angular Reversal:默认不勾选,勾选话,在道路边界处朝向路中线偏移。
Index[1]:
Input Decision:条件逻辑
添加子项:Index[0]:选择Road
Road Mode:I’m in Road
Is Road:默认勾选
Output Decision:执行逻辑
添加子项:Index[0]:选择Movement
Movement Type:ForwardOrBackward
Movement Mode:LocationOffset
Speed:2.0
【19】HP逻辑
1.选择关卡内的MiarmyPlacement对象,在其详情面板找到HPMin、HPMax属性。
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Show Attribue————————————————–>选择单个角色,可查看器属性信息,否则看不到。
Index[1]:
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择HP and MP
Miarmy HPMPType:set hp value ??
Value:200.0
Index[2]:
Input Decision:条件逻辑
添加子项:Index[0]:选择HP
HPMode:my HP from ?? to ??
Min Value:150.0
Max Value:250.0
Output Decision:执行逻辑
添加子项:Index[0]:选择Movement
Movement Type:ForwardOrBackward
Movement Mode:LocationOffset
Speed:2.0
【20】跟随节点逻辑
1.选择关卡内的MiarmyPlacement对象,复制命名为MiarmyPlacement2,移动其位置并修改其属性Miarmy Simulate Type:Target,及其朝向设置。
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]:
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Placement
Miarmy Follow Placement Type:follow placement ?? and direct follow distance??speed??
Appoint Placement:选择关卡内的MiarmyPlacement2对象,即需要跟随的目标
Location Speed:0.25
Rotater Speed:0.25
Placement Target Rotator:默认不勾选,勾选的话,会跟随2的旋转。
Only Rotator:默认不勾选,勾选话,不移动只跟随旋转。
【21】避让逻辑
1.选择关卡内的MiarmyGlobalActorSet对象,在其详情面板下选择其RVOComponent组件,可设置寻路相关属性。
2.选择关卡内的MiarmyPlacement对象,修改其Orient Random为360,即随机角度。
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]:
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Avoid Agent
Miarmy Avoid Type:avoid near agents by turn and slow action
Speed:0.1
Transform Location:默认不勾选;勾选的话,并设定位移偏移距离
Index[1]:
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Movement
Movement Type:ForwardOrBackward
Movement Mode:LocationOffset
Speed:2.0
3.保存,运行,查看效果
【22】动力学逻辑
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]:
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Dynamics————————————————–>目前,仅支持骨骼网格体的空气动力学(需要物理模拟资产等支持)。
Miarmy Dynamics Type:EnableDynamics
【23】随机种子属性
1.选择关卡内的MiarmyPlacement对象,修改其Seed Setting属性。能够确保修改Noise属性值时,不同对象的随机结果是不一致的。
【24】特效逻辑
1.选中并双击打开步骤5.2和步骤6.2创建的逻辑资产。
2.添加Miarmy Decisions数组元素:
Index[0]:
Input Decision:条件逻辑
Output Decision:执行逻辑
添加子项:Index[0]:选择Movement
Movement Type:ForwardOrBackward
Movement Mode:LocationOffset
Speed:2.0
Index[1]:
Input Decision:条件逻辑
添加子项:Index[0]:选择Bound
Bound Mode:I’m in bound
Is Bound:默认勾选,仅对盒内物体有作用 或不勾选,但需要填写Bound Id
Output Decision:执行逻辑
添加子项:Index[0]:选择Spawn VFX
Miarmy VFXType:Particle
Bound Box:50.0 50.0 50.0
VFXScale:1.0
Spawn Offset:0.0 0.0 0.0
Particle Asset:选择特效资产
【25】蓝图拓展
1.小球跟随角色:将Miarmy小球拖拽进关卡内,打开其蓝图编辑器,关闭其Collision Presets:NoCollision,然后添加蓝图逻辑:Event Tick -> SetActorLocation
GetPlayerCharacter->GetActorLocation->
->GetActorForwardVector->
2.盒子根数角色:逻辑同上。