信長技能BP圖文教學
新增技能
-
在Content Browser底下的 Content > MOBA > Hero > 英雄代號 > Skill資料夾下滑鼠右鍵新增一個Blueprint Class

-
此Blueprint Class繼承HeroSkill class

-
技能檔案命名規則為 : 武將代號(E/R/T/W)_Skill


-
打開剛剛新增的BP技能進入BP編輯頁面, 找到工具列的Class Defauls底下的MOBA, 編輯Name(技能名字)、Texture(技能圖示)


-
打開英雄的BP(武將代號_hero), 找到MOBA底下的Skill Classes右邊的+新增一個array element, 設定新技能如此便能在角色面板上看見此技能新增出來



- 回到BP技能編輯頁面, 工具列Class Details > MOBA底下的Level CD,此技能每個等級的CD時間, 技能等級最大有多少就新增幾個array element

- Level Mana Cost為此技能每個等級的耗魔, 同上新增array element
- MOBA底下的Variable Map為此技能的"依技能等級有所不同"的變數, 點右邊+新增一個Map,此Map名稱自定義.
- 攻擊技能應有Damage : Map取名為Damage, 點Values右側的+為此Map新增每個等級的傷害量

- Buff技能同樣, 例如Buff了爆擊率 : 命名為Critical並新增每個等級的爆擊率

開始設計一個技能前…
技能行為
點擊BP技能進入BP編輯器, 工具列的Class Defauls > MOBA底下的Skill Behavior

- Passive(被動技能) : 技能習得後立即對自己上Buff
- No Target(不需目標技能) : 點擊後以施法者為中心立即放技能
- Unit Target(單一目標技能) : 點擊後滑鼠左鍵選取一個目標並移動到此目標後放技能(需要設定MOBA > Cast Range)
- AOE(範圍技能) : 點擊後滑鼠左鍵選一個地點後放技能
- Directional(指向技能) : 點擊後滑鼠左鍵選一個方向放技能
- Toggle(開關技) :
- Immediate(瞬發技) :
- 技能(3.)(4.)(5.)可用滑鼠右鍵取消技能施放
技能流程
1.技能設定階段
- 在BP事件發生前, 設定這個技能的Class Defaults下的MOBA屬性。Name(技能名)、Skill Behavior(技能行為)、Texture(技能圖示)、HintActor(技能游標)、Level CD(技能CD)、Level Mana Cast(技能耗魔) 等等

2.找尋技能目標階段
3.攻擊或上Buff階段
- 傷害和Buff效果是依技能等級而有所不同,此時需要使用Class Defaults下MOBA屬性的Variable Map自定義技能的傷害(Damage Map)或效果(Something Map)
- Buff為繼承HeroBuff的BP Class ,此BP Class有自己的特效
4.生成技能特效階段
指向技的2、3、4階段由繼承 SkillDirectionActor或 SkillSplineActor的BP class : Bullet完成
Passive(被動技能)
藍圖設計思維:
技能習得後自動施放技能, 給予自身效果期間長且有唯一性的BUFF
- 不需設Duration(效果期間), 在Buff BP內設定 Duration 、 ParticleDuration 、 RealDuration
- Duration持續時間
- ParticleDuration特效的存活時間 RealDuration
- Actor真正的存活時間,設定的比Duration長來讓特效不要消失的太突然
- 使用AddUniqueBuf讓Buff有唯一性, 相同名稱的BUFF新的會蓋過舊的無法疊加
- 對象是自己
- 只有技能設定階段和上Buff階段。找尋技能目標階段->目標是自己 ; 生成技能特效階段->僅有Buff特效在上Buff時已有
技能設定階段:
- Class Defaults>MOBA需設定Name(技能名)、Skill Behavior(技能行為)、Texture(技能圖示)、Level CD(技能CD)、Level Mana Cast(技能耗魔)

- Level CD(技能CD)和Level Mana Cast(技能耗魔) 的值是右邊+號新增出來的, 代表每個技能等級各自的CD和耗魔
上Buff階段:
1.新增事件 :
- 在技能藍圖的主圖(EventGraph)上右鍵新增Event BP Spell Passive, 技能習得後立即呼叫此Event

2.生成BUFF :
- 右鍵新增Spawn Actor from Class節點, Class選擇繼承HeroBuff的BP類別(此時節點名稱會變成:SpawnActor XXXX)

3.生成位置 :
- 右鍵新增Caster節點(一個HeroSkill下的HeroCharacter類別變數), 右拉Caster上的藍點放開找到GetActorTransform此為Caster底下的函式 ,拉給Spawn Actor from Class節點的Spawn Transform



- 如此一來就生成一個BP類別的實體Actor了
4.Buff Unique Map :
- Spawn Actor from Class節點的Return Value右拉找到Buff Unique Map此為HeroBuff底下的一個Map變數

5.加入新的element到Buff Unique Map裡 :
- Buff Unique Map節點右拉輸入Add為此Map加入Buff增強角色的效果, 此例是增加物理爆擊率

- 新增的element還需要加入一個浮點小數代表Buff的量
6.新增VariableMap的子Map :
7. Buff Unique Map新增的Buff效果數值 :
- Buff Unique Map的Add節點下面的數值由Critical Map提供

8. 加入Buff到英雄上 :
- 右鍵新增Caster節點, 右拉Caster節點找到Caster底下的Add Unique Buff函數

- Add Unique Buff節點的Buff為Spawn Actor from Class節點的Return Value

- 注意白線(執行線)的順序, 一定要先設Buff Unique Map才能Add Unique Buff
整個主圖 :

No Target(不需目標技能)
藍圖設計思維:
以施法者為中心立即放技能, 以半徑找到所有影響目標或者只對自己有影響
- 可以是Buff技、攻擊技AOE或英雄面對方向的指向技
- 計算傷害或者給予Buff給自己
- 攻擊技也可以加上異常狀態Buff給敵人
技能設定階段:
- Class Defaults>MOBA需設定Name(技能名)、Skill Behavior(技能行為)、Texture(技能圖示)、Level CD(技能CD)、Level Mana Cast(技能耗魔)

找尋技能目標階段:
- 目標有可能是以自身為中心的AOE,或是指向技時英雄面對方向上的目標
- 指向技由Bullet處理目標,所以這邊只處理AOE的場合
- 如果是上Buff給自己也沒有此階段
- 如果有同時有找尋技能目標階段和生成技能特效階段,會使用seqence節點來區分執行順序
1. 新增事件 :
- 在技能藍圖的主圖(EventGraph)上右鍵新增Event BP Spell Now, 點擊技能會立即呼叫此Event

2. 事件順序 :
- 右鍵新增Seqence節點,藍圖會依順序跑, then0拉給找尋技能目標階段和給予傷害或上Buff階段 , then1拉給生成技能特效
3.找尋自身為半徑的所有目標 :
- 右鍵新增Caster 節點,並左鍵拉此節點的線放開可搜尋到Caster(HeroCharacter)底下的Function : Find Radius Actor by Location新增之


- Caster拉出GetActorLocation節點給Find Radius Actor by Location當Center參數, 手動輸入半徑, 並勾選Check Alive檢查目標是否是活的

給予傷害/上Buff階段:
- Find Radius Actor by Location節點輸出是一個HeroCharacter的Array, 使用ForEachLoop找到每個目標(HeroCharacter)給予傷害或Buff
- 或只對自己上Buff
- 傷害和Buff依技能等級有所不同, 使用Variable Map來儲存不同等級的傷害/效果
0. 使用ForEachLoop找Array中的每個HeroCharacter:
- 右鍵新增ForEachLoop節點, 此節點的左方輸入Array為Find Radius Actor by Location的Return Value

- ForEachLoop節點的輸出就是一個目標HeroCharacter
對目標攻擊時:
需先設定Variable Map中的Damage Map
呼叫攻擊計算函式
- 右鍵新增Get Player Controller 節點, 拉此節點轉換成MOBAPlayerController


- Find Radius Actor by Location右方的執行線(白線)拉給Cast to MOBAPlayerController
- 新增計算傷害函式 :
- Cast to MOBAPlayerController節點的As MOBAPlayer Controller右拉可找到MOBAPlayer Controller底下的Function : Server Attack Compute
- Server Attack Compute的Attacker為Caster(可右鍵再新增一次節點),Victim為目標HeroCharacter(ForEachLoop節點的Array Element)

- 傷害類型有物傷、法傷和純傷

- 取得Variable Map中Damage Map :
- AOE的攻擊階段Overview:

對目標Buff時:
需先設定Variable Map中的 Map
生成Buff
和Passive的永久Buff不同, 需要設定Duration(效果期間)
- 主圖右鍵新增Spawn Actor from Class

- Class選擇一個Buff, 繼承HeroBuff的BP類別
- Spawn Transform 為目標HeroCharacter(ForEachLoop的Array Element或者Caster), 右拉出的GetActorTransform

–

- 設定Buff變數Duration :
- Spawn Actor from Class節點的Return Value為一個HeroBuff的實體Actor, 右拉出Set Duration節點設定HeroBuff底下的一個變數Duration的值

- 呼叫VariableMap的子Map給Set Duration節點 :
加Buff到英雄上 :
- 目標HeroCharacter(ForEachLoop的Array Element或者Caster), 右拉出的函式Add Buff, 不可重複的Buff則是Add Unique Buff

–

- Spawn Actor from Class節點的Buff丟給Add Buff

攻擊+異常狀態
- 生成Buff給目標Character
- 給予目標傷害
需先設定Variable Map中的 Map
生成Buff
- 參照前面的生成Buff
- Spawn Transform的目標HeroCharacter一定是敵人:ForEachLoop的Array Element
- Map為上面設定的StunDuration Map, 此異常的持續時間
加Buff到英雄上
- 參照前面的加Buff到英雄上
- Add Buff的目標HeroCharacter一定是敵人:ForEachLoop的Array Element
呼叫攻擊計算函式
生成技能特效階段:
- 如果對自己放Buff且已在HeroBuff設定其特效, 此階段可不用
- 右鍵新增Spawn Actor from Class節點,Seqence的then1拉給此節點
- Class選取要新增的特效類別, Spawn Transform為Caster節點拉出的GetActorTransform

整個主圖:
- 攻擊周遭敵軍技能

- 放Buff給自己

- 放Buff給自己(加上技能特效和Buff唯一) :

- 施放技能給周遭友軍

–

- 攻擊周遭敵軍並暈他們

–

–

往英雄面對方向的指向技
- 指向技的找尋目標、給予傷害和生成特效三個階段都是在Bullet(繼承SkillDirectionActor或SkillSplineActor)完成的
- 我們只需要生成Bullet並設定它的傷害和方向即可
1. 新增指向技 :
- 新增Spawn Actor from Class節點, Class選擇Bullet(子彈)繼承SkillDirectionActor, Spawn Transform為Caster的GetActorTransform

2. 設定方向 :
- Spawn Actor from Class節點的 , Attacker是Caster
- Dir是Event BP Spell Now的VFace To ,也許會需要Normalize和去掉Z值(不往上下偏移)
- VFace To右拉Normalize
- Normalize節點的Return Value上按右鍵選Split Struct Pin分為Return Value X Y Z


- Normalize節點的任一Return Value右拉找到Make Vector,Make Vector節點的X Y分別是 Normalize節點Return ValueX Y, Z則設為0(防止上下飄移)

3. 設定傷害 :
4. 整個主圖 :

Unit Targer(單一目標技能)
藍圖設計思維:
點擊目標後給予攻擊或者Buff
- 可以給同時給目標攻擊和異常Buff
- 因為技能事件Event BP Spell to Actor是在選定目標後才呼叫, 角色需先移動到目標才會呼叫此事件
技能設定階段:
- Class Defaults>MOBA需設定Name(技能名)、Skill Behavior(技能行為)、Face Skill(是否面對技能)、Cast Range(施法距離)、Texture(技能圖示)、Level CD(技能CD)、Level Mana Cast(技能耗魔)

- 不設定Cast Range(施法距離) 技能可能無法發動
找尋技能目標階段:
1. 新增事件 :
- 在主圖(EventGraph)視窗, 右鍵新增Event BP Spwll to Actor
- Event BP Spwll to Actor的Victim即為目標HeroCharacter

2. 新增事件順序 :
- 新增Seqence節點, Then0拉給傷害計算/上Buff, Then1拉給技能特效, BP會依照Then0 Then1 …的順序執行
給予傷害或上Buff階段:
傷害:
0.設定Damage Map
1. 計算傷害:
- 新增Get Player Controller節點, 右拉此節點Cast To MOBAPlayerController, As MOMAPlayerController右拉出Server Attack Compute

- Attacker為Caster
- Victim為Event BP Spell to Actor
- Dtype為傷害類型:物傷、法傷和純傷
- Damage由Damage Map取得(依技能等級有所不同)
2. 設定傷害:
Buff:
0.設定Duration Map
1.生成Buff
- 主圖右鍵新增Spawn Actor from Class

- Class選擇一個Buff, 繼承HeroBuff的BP類別
- Spawn Transform 為目標HeroCharacter(Event BP Spwll to Actor的Victim), 右拉出的GetActorTransform

- 設定Buff變數Duration :
- Spawn Actor from Class節點的Return Value為一個HeroBuff的實體Actor, 右拉出Set Duration節點設定HeroBuff底下的一個變數Duration的值

2.加Buff到英雄上 :
- 目標HeroCharacter(Event BP Spell to Actor的Victim)右拉出的函式Add Buff, 不可重複的Buff則是Add Unique Buff
- Spawn Actor from Class節點的Buff丟給Add Buff

攻擊+異常Buff:
- 參照上方給予敵方負面異常Buff+給予傷害合併即可
需先設定Variable Map中的 Map
生成技能特效階段:
- 上Buff也許不需要此階段, 因為在HeroBuff BP裡設定了其特效
- 新增Spawn Actor from Class節點, Seqence節點的Then1拉給此節點
- Class為特效類別
- Spawn Transform為Event BP Spell to Actor的Victim拉出的GetActorTransform

整個主圖:
AOE(範圍技能)
藍圖設計思維:
藍圖設計和No Target的攻擊技能一樣, 唯一差別是找尋技能目標階段的技能中心位置由滑鼠點擊決定

- 給予傷害或上Buff階段和生成技能特效階段都和No Target一樣
技能設定階段:
- Class Defaults>MOBA需設定Name(技能名)、Skill Behavior(技能行為)、Texture(技能圖示)、Hint Actor(目標游標)、Level CD(技能CD)、Level Mana Cast(技能耗魔)

Hint Actor(目標游標):
目標游標圖示:
- 在Skill檔案位置右鍵新增一個Blueprint Class繼承SkillHintActor

- 名稱為技能名+Hint

- 打開此HintActor藍圖編輯, 工具列Class Defaults的Skill Hint下的Skill Type修改成Range Skill


- Fly Skill下設定你的Skill Diameter、Skill Cast Radius、Minimal Cast Radius

- Components 視窗找到BodySprite修改底下Sprite > Source Sprite

- Sprite放在Content Browser:Content > MOBA > Skill資料夾下 ,右鍵新增Sprite

- 打開Sprite在Source Texture選貼圖, Source Dimension改成跟圖片解析度等比例即可

點擊技能後,滑鼠位置會顯示剛剛的Sprite
- 再點左鍵呼藍圖事件Event BP Spell to Position.
- 再點右鍵則取消技能施放.
找尋技能目標階段:
0.新增事件:
- 主圖下,新增Event BP Spell to Position
1.事件順序:
- 新增seqence, Then0放事件主體, Then1放技能特效
2.找到所有目標:
- 新增Caster, 右拉新增Caster函式:Find Radius Actor by Location
- Center是Event BP Spell to Position的Pos
- Radius手動輸入
- Check Alive要勾選

3. 拜訪每個目標:
- ForEachLoop

給予傷害或上Buff階段:
傷害:
- 找到MOBAPlayerController

- 插入到ForEachLoop前,可以不用每個Loop都執行一次
- Variable Map的Damage Map


- MOBAPlayerController的Server Attack Compute

Buff:
- 新增Spawn Actor from Class
- Class 選繼承HeroBuff的BP Class
- Spawn Transform是Event BP Spell to Position的Pos右拉出的Make Transform(建立一個transform格式)

- Spawn Actor from Class的Buff右拉SetDuration
- Variable Map的Duration Map設給SetDuration

- 目標的Add Buff/Add Unique Buff

傷害+Buff:
給予傷害和給予Buff的BP合起來即可, 見整個主圖
生成技能特效階段:
- Spawn Transform在Event BP Spell to Position的Pos右拉Make Transform

整個主圖:
Directional(指向技能)
藍圖設計思維:
指向技的找尋技能目標階段、給予傷害、生成技能特效階段皆由繼承 SkillDirectionActor或 SkillSplineActor的BP class完成,此BP Class 我們命名為Bullet
- 指向技點擊之後, 滑鼠游標決定攻擊方向,左鍵確定右鍵取消
- 在BP上我們只要生成Bullet,設定此Bullet的方向跟傷害即可
技能設定階段:
- Class Defaults>MOBA需設定Name(技能名)、Skill Behavior(技能行為)、Texture(技能圖示)、Hint Actor(目標游標)、Level CD(技能CD)、Level Mana Cast(技能耗魔)

Hint Actor(目標游標):
目標游標圖示:
- 在Skill檔案位置右鍵新增一個Blueprint Class繼承SkillHintActor

- 名稱為技能名+Hint

- 打開此HintActor藍圖編輯, 工具列Class Defaults的Skill Hint下的Skill Type修改成Direction Skill


- Components 視窗找到BodySprite修改底下Sprite > Source Sprite

- Components 視窗找到HeadSprite修改底下Sprite > Source Sprite

- Components 視窗找到FootSprite修改底下Sprite > Source Sprite

- BodySprite會伸縮,而另外兩個不會變動
- Sprite放在Content Browser:Content > MOBA > Skill資料夾下
找尋技能目標&給予傷害&生成技能特效階段 :
- 在主圖(EventGraph)新增Event BP Spell to Direction

生成Bullet:
- 新增Spawn Actor from Class
- Class選繼承SkillDirectionActor或 SkillSplineActor的BP class
- Spawn Transform是Caster右拉出來的GetActorTransform

設定Bullet方向:
如果此Bullet是繼承自SkillDirectionActor會需要Set Direction
如果此Bullet是繼承自SkillSplineActor,則只需Set Attacker

- 設定方向, Spawn Actor from Class節點的Return Value是Bullet物件
- 右拉Spawn Actor from Class節點的Return Value出Set Direction
- Attacker是Caster
- Dir是Event BP Spell to Direction減去Caster的GetActorLocation

設定Bullet傷害:
- Spawn Actor from Class節點的Return Value右拉Set Damage
- Damage Map
整個主圖:

Toggle(開關技)
新增Buff
Passive被動技能Buff
一般Buff
新增Bullet
常用藍圖快捷鍵&操作