<style>
.markdown-body {
max-width: 70%;
}
</style>
信長技能BP圖文教學
===
# <span style="color:#FF0000;">新增技能</span>
1. 在Content Browser底下的 **Content** \> **MOBA** > **Hero** > **_英雄代號_** \> **Skill**資料夾下滑鼠右鍵新增一個Blueprint Class
![](https://i.imgur.com/uKQ3uaA.png)
2. 此Blueprint Class繼承**HeroSkill** class
![](https://i.imgur.com/4PzdRLR.png)
3. 技能檔案命名規則為 : **_武將代號_**(E/R/T/W)_Skill
![](https://i.imgur.com/Sb5gHep.png)![](https://i.imgur.com/5h96mIe.png)
4. 打開剛剛新增的BP技能進入BP編輯頁面, 找到工具列的**Class Defauls**底下的**MOBA**, 編輯**Name**(技能名字)、**Texture**(技能圖示)
![](https://i.imgur.com/Tsljy16.png)
![](https://i.imgur.com/o5igKUS.png)
5. 打開英雄的BP(**_武將代號_**_hero), 找到MOBA底下的**Skill Classes**右邊的+新增一個**array element**, 設定新技能如此便能在角色面板上看見此技能新增出來
![](https://i.imgur.com/e5dhCjC.png)
![](https://i.imgur.com/nfbyOIa.png)
![](https://i.imgur.com/FjaYmxZ.png)
- 最多能有個6技能,含天生技
6. 回到BP技能編輯頁面, 工具列Class Details > MOBA底下的**Level CD**,此技能每個等級的CD時間, 技能等級最大有多少就新增幾個**array element**
![](https://i.imgur.com/DOCwY8t.png)
- 等級越高,CD時間應越短
7. **Level Mana Cost**為此技能每個等級的耗魔, 同上新增**array element**
8. **MOBA**底下的**Variable Map**為此技能的"依技能等級有所不同"的變數, 點右邊+新增一個**Map**,此**Map**名稱**自定義**.
- 攻擊技能應有**Damage** : **Map**取名為**Damage**, 點**Values**右側的+為此**Map**新增每個等級的傷害量
![](https://i.imgur.com/zFh9kb8.png)
- Buff技能同樣, 例如Buff了爆擊率 : 命名為**Critical**並新增每個等級的爆擊率
![](https://i.imgur.com/2FG8r0a.png)
# 開始設計一個技能前...
## 技能行為
點擊BP技能進入BP編輯器, 工具列的Class Defauls > MOBA底下的**Skill Behavior**
![](https://i.imgur.com/rLkwngb.png)
1. **Passive**(被動技能) : 技能習得後立即對自己上Buff
2. **No Target**(不需目標技能) : 點擊後以施法者為中心立即放技能
3. **Unit Target**(單一目標技能) : 點擊後滑鼠左鍵選取一個目標並移動到此目標後放技能(需要設定**MOBA** > **Cast Range**)
4. **AOE**(範圍技能) : 點擊後滑鼠左鍵選一個地點後放技能
5. **Directional**(指向技能) : 點擊後滑鼠左鍵選一個方向放技能
6. **Toggle**(開關技) :
7. **Immediate**(瞬發技) :
- 技能(3.)(4.)(5.)可用滑鼠右鍵取消技能施放
## 技能流程
### 1.技能設定階段
- 在BP事件發生前, 設定這個技能的Class Defaults下的MOBA屬性。**Name(技能名)**、**Skill Behavior(技能行為)**、**Texture(技能圖示)**、**HintActor(技能游標)**、**Level CD(技能CD)**、**Level Mana Cast(技能耗魔)** 等等
![](https://i.imgur.com/QRUM7ry.png)
### 2.找尋技能目標階段
- AOE需要在BP判斷技能命中對象
### 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(技能耗魔)**
![](https://i.imgur.com/BIffKaA.png)
- **Level CD(技能CD)**和**Level Mana Cast(技能耗魔)** 的值是右邊+號新增出來的, 代表每個技能等級各自的CD和耗魔
## 上Buff階段:
### 1.新增事件 :
- 在技能藍圖的主圖(EventGraph)上右鍵新增Event BP Spell Passive, 技能習得後立即呼叫此Event
![](https://i.imgur.com/wraRsc5.png)
### 2.生成BUFF :
- 右鍵新增**Spawn Actor from Class**節點, Class選擇繼承HeroBuff的BP類別(此時節點名稱會變成:SpawnActor XXXX)
![](https://i.imgur.com/m9ErR9Y.png)
### 3.生成位置 :
- 右鍵新增**Caster**節點(一個HeroSkill下的HeroCharacter類別變數), 右拉**Caster**上的藍點放開找到**GetActorTransform**此為**Caster**底下的函式 ,拉給**Spawn Actor from Class**節點的Spawn Transform
![](https://i.imgur.com/c0eU75r.png)
![](https://i.imgur.com/0lgof1J.png)
![](https://i.imgur.com/Wgnv6rU.png)
- 如此一來就生成一個BP類別的實體Actor了
### 4.Buff Unique Map :
- **Spawn Actor from Class**節點的Return Value右拉找到**Buff Unique Map**此為HeroBuff底下的一個Map變數
![](https://i.imgur.com/qPg9Uq3.png)
### 5.加入新的element到Buff Unique Map裡 :
- **Buff Unique Map**節點右拉輸入**Add**為此Map加入Buff增強角色的效果, 此例是增加物理爆擊率
![](https://i.imgur.com/fiCiEcn.png)
- 新增的element還需要加入一個浮點小數代表Buff的量
### 6.新增VariableMap的子Map :
- 參考[信長Variable Map設定和呼叫](https://hackmd.io/MwVg7AZgDAJgTADgLTAEaSQFgMZQIxICcUqAhkgKZhQQIgBsUC9EFQA=#)
### 7. Buff Unique Map新增的Buff效果數值 :
- **Buff Unique Map**的**Add**節點下面的數值由Critical Map提供
![](https://i.imgur.com/7elMd6G.png)
### 8. 加入Buff到英雄上 :
- 右鍵新增**Caster**節點, 右拉**Caster**節點找到**Caster**底下的**Add Unique Buff**函數
![](https://i.imgur.com/ReRXslp.png)
- **Add Unique Buff**節點的Buff為**Spawn Actor from Class**節點的Return Value
![](https://i.imgur.com/vYA1jaS.png)
- **注意白線(執行線)的順序, 一定要先設Buff Unique Map才能Add Unique Buff**
## 整個主圖 :
![](https://i.imgur.com/mzd1Frx.png)
---
# No Target(不需目標技能)
## 藍圖設計思維:
以施法者為中心立即放技能, 以半徑找到所有影響目標或者只對自己有影響
- 可以是Buff技、攻擊技AOE或英雄面對方向的指向技
- 計算傷害或者給予Buff給自己
- 攻擊技也可以加上異常狀態Buff給敵人
## 技能設定階段:
- Class Defaults>MOBA需設定**Name(技能名)**、**Skill Behavior(技能行為)**、**Texture(技能圖示)**、**Level CD(技能CD)**、**Level Mana Cast(技能耗魔)**
![](https://i.imgur.com/MhId39x.png)
## 找尋技能目標階段:
- 目標有可能是以自身為中心的AOE,或是指向技時英雄面對方向上的目標
- 指向技由Bullet處理目標,所以這邊只處理AOE的場合
- 如果是上Buff給自己也沒有此階段
- 如果有同時有**找尋技能目標階段**和**生成技能特效階段**,會使用seqence節點來區分執行順序
### 1. 新增事件 :
- 在技能藍圖的主圖(EventGraph)上右鍵新增Event BP Spell Now, 點擊技能會立即呼叫此Event
![](https://i.imgur.com/fXiqvEj.png)
### 2. 事件順序 :
- 右鍵新增**Seqence**節點,藍圖會依順序跑, then0拉給找尋技能目標階段和給予傷害或上Buff階段 , then1拉給生成技能特效
### 3.找尋自身為半徑的所有目標 :
- 右鍵新增**Caster** 節點,並左鍵拉此節點的線放開可搜尋到Caster(HeroCharacter)底下的Function : **Find Radius Actor by Location**新增之
![](https://i.imgur.com/k9DZ3yR.png)
![](https://i.imgur.com/rC7sG4F.png)
- **Caster**拉出**GetActorLocation**節點給**Find Radius Actor by Location**當Center參數, 手動輸入半徑, 並勾選Check Alive檢查目標是否是活的
![](https://i.imgur.com/8AMKNGi.png)
## 給予傷害/上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
![](https://i.imgur.com/DkvZavj.png)
- **ForEachLoop**節點的輸出就是一個目標HeroCharacter
### 對目標攻擊時:
#### 需先設定Variable Map中的Damage Map
- 參考[信長Variable Map設定和呼叫](https://hackmd.io/MwVg7AZgDAJgTADgLTAEaSQFgMZQIxICcUqAhkgKZhQQIgBsUC9EFQA=#)
#### 呼叫攻擊計算函式
1. 右鍵新增**Get Player Controller** 節點, 拉此節點轉換成**MOBAPlayerController**
![](https://i.imgur.com/8Xustbx.png)
![](https://i.imgur.com/ZVBYKSg.png)
2. **Find Radius Actor by Location**右方的執行線(白線)拉給**Cast to MOBAPlayerController**
3. 新增計算傷害函式 :
- **Cast to MOBAPlayerController**節點的As MOBAPlayer Controller右拉可找到MOBAPlayer Controller底下的Function : **Server Attack Compute**
4. **Server Attack Compute**的Attacker為**Caster**(可右鍵再新增一次節點),Victim為目標HeroCharacter(**ForEachLoop**節點的Array Element)
![](https://i.imgur.com/yYphs7x.png)
- 傷害類型有物傷、法傷和純傷
![](https://i.imgur.com/vf24U23.png)
5. 取得**Variable Map**中Damage Map :
- 參考[信長Variable Map設定和呼叫](https://hackmd.io/MwVg7AZgDAJgTADgLTAEaSQFgMZQIxICcUqAhkgKZhQQIgBsUC9EFQA=#)
6. AOE的攻擊階段Overview:
![](https://i.imgur.com/PbqUpsX.png)
### 對目標Buff時:
#### 需先設定Variable Map中的 Map
- 參考[信長Variable Map設定和呼叫](https://hackmd.io/MwVg7AZgDAJgTADgLTAEaSQFgMZQIxICcUqAhkgKZhQQIgBsUC9EFQA=#),設定Duration Map,如有其他效果Map也一併新增
#### 生成Buff
和Passive的永久Buff不同, 需要設定Duration(效果期間)
1. 主圖右鍵新增**Spawn Actor from Class**
![](https://i.imgur.com/wb4vp49.png)
- Class選擇一個Buff, 繼承HeroBuff的BP類別
- Spawn Transform 為目標HeroCharacter(**ForEachLoop**的Array Element或者**Caster**), 右拉出的**GetActorTransform**
![](https://i.imgur.com/Jj4JAJV.png)
--
![](https://i.imgur.com/jOUQlj6.png)
2. 設定Buff變數Duration :
- **Spawn Actor from Class**節點的Return Value為一個HeroBuff的實體Actor, 右拉出**Set Duration**節點設定HeroBuff底下的一個變數Duration的值
![](https://i.imgur.com/1ZxHQBE.png)
3. 呼叫VariableMap的子Map給**Set Duration**節點 :
- 參考[信長Variable Map設定和呼叫](https://hackmd.io/MwVg7AZgDAJgTADgLTAEaSQFgMZQIxICcUqAhkgKZhQQIgBsUC9EFQA=#)
#### 加Buff到英雄上 :
1. 目標HeroCharacter(**ForEachLoop**的Array Element或者**Caster**), 右拉出的函式**Add Buff**, 不可重複的Buff則是**Add Unique Buff**
![](https://i.imgur.com/HK0o4Rt.png)
--
![](https://i.imgur.com/b6SLhPQ.png)
- **Spawn Actor from Class**節點的Buff丟給**Add Buff**
![](https://i.imgur.com/5csGQKf.png)
### 攻擊+異常狀態
- 實作上其實就是
1. 生成Buff給目標Character
2. 給予目標傷害
- 目標Character必定是敵人
#### 需先設定Variable Map中的 Map
- 參考[信長Variable Map設定和呼叫](https://hackmd.io/MwVg7AZgDAJgTADgLTAEaSQFgMZQIxICcUqAhkgKZhQQIgBsUC9EFQA=#),新增此異常狀態的持續時間
![](https://i.imgur.com/zTXP4t7.png)
#### 生成Buff
- 參照前面的[生成Buff](#生成Buff)
- Spawn Transform的目標HeroCharacter一定是敵人:**ForEachLoop**的Array Element
- Map為上面設定的StunDuration Map, 此異常的持續時間
#### 加Buff到英雄上
- 參照前面的[加Buff到英雄上](#加Buff到英雄上-)
- Add Buff的目標HeroCharacter一定是敵人:**ForEachLoop**的Array Element
#### 呼叫攻擊計算函式
- 參照前面的[呼叫攻擊計算函式](#呼叫攻擊計算函式)
## 生成技能特效階段:
- 如果對自己放Buff且已在HeroBuff設定其特效, 此階段可不用
1. 右鍵新增**Spawn Actor from Class**節點,**Seqence**的then1拉給此節點
2. Class選取要新增的特效類別, Spawn Transform為**Caster**節點拉出的**GetActorTransform**
![](https://i.imgur.com/cTtpSXm.png)
## 整個主圖:
- 攻擊周遭敵軍技能
![](https://i.imgur.com/yovzvJi.png)
- 放Buff給自己
![](https://i.imgur.com/C1l6TwR.png)
- 放Buff給自己(加上技能特效和Buff唯一) :
![](https://i.imgur.com/V3nocdp.png)
- 施放技能給周遭友軍
![](https://i.imgur.com/t3Mi9fj.png)
--
![](https://i.imgur.com/fZ7mySk.png)
- 攻擊周遭敵軍並暈他們
![](https://i.imgur.com/po08wGJ.png)
--
![](https://i.imgur.com/8nxZJN4.png)
--
![](https://i.imgur.com/jVFBx3n.png)
## 往英雄面對方向的指向技
- 指向技的找尋目標、給予傷害和生成特效三個階段都是在Bullet(繼承SkillDirectionActor或SkillSplineActor)完成的
- 我們只需要生成Bullet並設定它的傷害和方向即可
### 1. 新增指向技 :
- 新增**Spawn Actor from Class**節點, Class選擇Bullet(子彈)繼承SkillDirectionActor, Spawn Transform為**Caster**的**GetActorTransform**
![](https://i.imgur.com/OxTTCqT.png)
### 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
![](https://i.imgur.com/NpNKuyB.png)
![](https://i.imgur.com/QaJEQGj.png)
- **Normalize**節點的任一Return Value右拉找到**Make Vector**,**Make Vector**節點的X Y分別是 **Normalize**節點Return ValueX Y, Z則設為0(防止上下飄移)
![](https://i.imgur.com/bxIkK7d.png)
### 3. 設定傷害 :
- **Spawn Actor from Class**節點的Return Value右拉**Set Damage**
- 參考[信長Variable Map設定和呼叫](https://hackmd.io/MwVg7AZgDAJgTADgLTAEaSQFgMZQIxICcUqAhkgKZhQQIgBsUC9EFQA=#),呼叫Damage Map
![](https://i.imgur.com/XhmKwjU.png)
### 4. 整個主圖 :
![](https://i.imgur.com/hLKborw.png)
---
# 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(技能耗魔)**
![](https://i.imgur.com/dksWKt5.png)
- 不設定**Cast Range(施法距離)** 技能可能無法發動
## 找尋技能目標階段:
### 1. 新增事件 :
- 在主圖(EventGraph)視窗, 右鍵新增**Event BP Spwll to Actor**
- **Event BP Spwll to Actor**的Victim即為目標HeroCharacter
![](https://i.imgur.com/fIm5NGw.png)
### 2. 新增事件順序 :
- 新增**Seqence**節點, Then0拉給傷害計算/上Buff, Then1拉給技能特效, BP會依照Then0 Then1 ...的順序執行
## 給予傷害或上Buff階段:
### 傷害:
#### 0.設定Damage Map
- 參考[信長Variable Map設定和呼叫](https://hackmd.io/MwVg7AZgDAJgTADgLTAEaSQFgMZQIxICcUqAhkgKZhQQIgBsUC9EFQA=#),新增Variable Map的子Map:Damage Map
#### 1. 計算傷害:
- 新增**Get Player Controller**節點, 右拉此節點**Cast To MOBAPlayerController**, As MOMAPlayerController右拉出**Server Attack Compute**
![](https://i.imgur.com/itjfckk.png)
- Attacker為**Caster**
- Victim為**Event BP Spell to Actor**
- Dtype為傷害類型:物傷、法傷和純傷
- Damage由Damage Map取得(依技能等級有所不同)
#### 2. 設定傷害:
- 參考[信長Variable Map設定和呼叫](https://hackmd.io/MwVg7AZgDAJgTADgLTAEaSQFgMZQIxICcUqAhkgKZhQQIgBsUC9EFQA=#),呼叫Damage Map
![](https://i.imgur.com/92zSxNF.png)
- 傷害值丟給**Server Attack Compute**
![](https://i.imgur.com/USscGut.png)
### Buff:
#### 0.設定Duration Map
- 參考[信長Variable Map設定和呼叫](https://hackmd.io/MwVg7AZgDAJgTADgLTAEaSQFgMZQIxICcUqAhkgKZhQQIgBsUC9EFQA=#),新增Variable Map的子Map:Duration Map
- 可新增其他Map儲存Buff所需要用到跟技能等級掛勾的數值
#### 1.生成Buff
1. 主圖右鍵新增**Spawn Actor from Class**
![](https://i.imgur.com/wb4vp49.png)
- Class選擇一個Buff, 繼承HeroBuff的BP類別
- Spawn Transform 為目標HeroCharacter(**Event BP Spwll to Actor**的Victim), 右拉出的**GetActorTransform**
![](https://i.imgur.com/BSdwWsG.png)
2. 設定Buff變數Duration :
- **Spawn Actor from Class**節點的Return Value為一個HeroBuff的實體Actor, 右拉出**Set Duration**節點設定HeroBuff底下的一個變數Duration的值
![](https://i.imgur.com/1ZxHQBE.png)
#### 2.加Buff到英雄上 :
- 目標HeroCharacter(**Event BP Spell to Actor**的Victim)右拉出的函式**Add Buff**, 不可重複的Buff則是**Add Unique Buff**
- **Spawn Actor from Class**節點的Buff丟給**Add Buff**
![](https://i.imgur.com/ZkRS9Fl.png)
### 攻擊+異常Buff:
- 參照上方給予敵方負面異常Buff+給予傷害合併即可
#### 需先設定Variable Map中的 Map
- 參考[信長Variable Map設定和呼叫](https://hackmd.io/MwVg7AZgDAJgTADgLTAEaSQFgMZQIxICcUqAhkgKZhQQIgBsUC9EFQA=#),新增此異常狀態的持續時間
![](https://i.imgur.com/zTXP4t7.png)
#### 1.[生成Buff](#1生成Buff)
#### 2.[加Buff到英雄上](#2加Buff到英雄上-)
#### 3.[計算傷害](#1-計算傷害)
#### 4.[設定傷害](#2-設定傷害)
## 生成技能特效階段:
- 上Buff也許不需要此階段, 因為在HeroBuff BP裡設定了其特效
1. 新增**Spawn Actor from Class**節點, **Seqence**節點的Then1拉給此節點
- Class為特效類別
- Spawn Transform為**Event BP Spell to Actor**的Victim拉出的**GetActorTransform**
![](https://i.imgur.com/1S6U6u4.png)
## 整個主圖:
- 一般攻擊技能
![](https://i.imgur.com/6hfTDHR.png)
- Buff技能
![](https://i.imgur.com/kcujb06.png)
- 攻擊+異常技能
![](https://i.imgur.com/eF8p76F.png)
--
![](https://i.imgur.com/LhNhf2f.png)
---
# AOE(範圍技能)
## 藍圖設計思維:
藍圖設計和No Target的攻擊技能一樣, 唯一差別是找尋技能目標階段的技能中心位置由滑鼠點擊決定
![](https://i.imgur.com/BMWL8ts.png)
- 給予傷害或上Buff階段和生成技能特效階段都和No Target一樣
## 技能設定階段:
- Class Defaults>MOBA需設定**Name(技能名)**、**Skill Behavior(技能行為)**、**Texture(技能圖示)**、**Hint Actor(目標游標)**、**Level CD(技能CD)**、**Level Mana Cast(技能耗魔)**
![](https://i.imgur.com/HWAiPLp.png)
### Hint Actor(目標游標):
#### 目標游標圖示:
1. 在Skill檔案位置右鍵新增一個Blueprint Class繼承SkillHintActor
![](https://i.imgur.com/ID5ZZ5S.png)
2. 名稱為技能名+Hint
![](https://i.imgur.com/4eUnMfF.png)
3. 打開此HintActor藍圖編輯, 工具列Class Defaults的Skill Hint下的Skill Type修改成Range Skill
![](https://i.imgur.com/Tsljy16.png)
![](https://i.imgur.com/nGaDZaI.png)
4. Fly Skill下設定你的Skill Diameter、Skill Cast Radius、Minimal Cast Radius
![](https://i.imgur.com/hKmtpSh.png)
5. Components 視窗找到BodySprite修改底下Sprite > Source Sprite
![](https://i.imgur.com/bfOCRZX.png)
6. Sprite放在Content Browser:Content > MOBA > Skill資料夾下 ,右鍵新增Sprite
![](https://i.imgur.com/2V9rkNq.png)
7. 打開Sprite在Source Texture選貼圖, Source Dimension改成跟圖片解析度等比例即可
![](https://i.imgur.com/DeVwAEE.png)
#### 點擊技能後,滑鼠位置會顯示剛剛的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要勾選
![](https://i.imgur.com/9Dj2gky.png)
### 3. 拜訪每個目標:
- ForEachLoop
![](https://i.imgur.com/f2m4H2C.png)
## 給予傷害或上Buff階段:
### 傷害:
- 和No Target的攻擊技能一樣
1. 找到MOBAPlayerController
![](https://i.imgur.com/3ozRO1Q.png)
- 插入到ForEachLoop前,可以不用每個Loop都執行一次
2. Variable Map的Damage Map
![](https://i.imgur.com/XeOeZKq.png)
![](https://i.imgur.com/jDqHPop.png)
3. MOBAPlayerController的Server Attack Compute
![](https://i.imgur.com/NGAoHpN.png)
### Buff:
1. 新增**Spawn Actor from Class**
- Class 選繼承HeroBuff的BP Class
- Spawn Transform是**Event BP Spell to Position**的Pos右拉出的**Make Transform(建立一個transform格式)**
![](https://i.imgur.com/z9XnJEa.png)
2. **Spawn Actor from Class**的Buff右拉**SetDuration**
- Variable Map的Duration Map設給**SetDuration**
![](https://i.imgur.com/NOncNkA.png)
3. 目標的Add Buff/Add Unique Buff
![](https://i.imgur.com/5qgFDU5.png)
### 傷害+Buff:
給予傷害和給予Buff的BP合起來即可, 見[整個主圖](#整個主圖2)
## 生成技能特效階段:
- Spawn Transform在**Event BP Spell to Position**的Pos右拉**Make Transform**
![](https://i.imgur.com/Xey2ZZU.png)
## 整個主圖:
- 攻擊
![](https://i.imgur.com/zkDRp8N.png)
- Buff
![](https://i.imgur.com/TYyOsNi.png)
--
![](https://i.imgur.com/oKZHmWb.png)
- 攻擊+Buff
![](https://i.imgur.com/Jg15TaM.png)
--
![](https://i.imgur.com/HEhR1oj.png)
--
![](https://i.imgur.com/U8r7ULH.png)
---
# 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(技能耗魔)**
![](https://i.imgur.com/uplcoeM.png)
### Hint Actor(目標游標):
#### 目標游標圖示:
1. 在Skill檔案位置右鍵新增一個Blueprint Class繼承SkillHintActor
![](https://i.imgur.com/ID5ZZ5S.png)
2. 名稱為技能名+Hint
![](https://i.imgur.com/4eUnMfF.png)
3. 打開此HintActor藍圖編輯, 工具列Class Defaults的Skill Hint下的Skill Type修改成Direction Skill
![](https://i.imgur.com/Tsljy16.png)
![](https://i.imgur.com/8ia7tdK.png)
4. Components 視窗找到BodySprite修改底下Sprite > Source Sprite
![](https://i.imgur.com/nqbN4xX.png)
5. Components 視窗找到HeadSprite修改底下Sprite > Source Sprite
![](https://i.imgur.com/RqizLS0.png)
6. Components 視窗找到FootSprite修改底下Sprite > Source Sprite
![](https://i.imgur.com/HBW9rtf.png)
- BodySprite會伸縮,而另外兩個不會變動
- Sprite放在Content Browser:Content > MOBA > Skill資料夾下
## 找尋技能目標&給予傷害&生成技能特效階段 :
- 在主圖(EventGraph)新增**Event BP Spell to Direction**
![](https://i.imgur.com/I5cA5pu.png)
### 生成Bullet:
1. 新增**Spawn Actor from Class**
- Class選繼承SkillDirectionActor或 SkillSplineActor的BP class
- Spawn Transform是**Caster**右拉出來的**GetActorTransform**
![](https://i.imgur.com/IavXMbG.png)
### 設定Bullet方向:
如果此Bullet是繼承自SkillDirectionActor會需要**Set Direction**
如果此Bullet是繼承自SkillSplineActor,則只需**Set Attacker**
![](https://i.imgur.com/18bIINZ.png)
1. 設定方向, **Spawn Actor from Class**節點的Return Value是Bullet物件
2. 右拉**Spawn Actor from Class**節點的Return Value出**Set Direction**
- Attacker是**Caster**
- Dir是**Event BP Spell to Direction**減去**Caster**的GetActorLocation
![](https://i.imgur.com/6fCGIF5.png)
### 設定Bullet傷害:
1. **Spawn Actor from Class**節點的Return Value右拉**Set Damage**
2. Damage Map
- 參考[信長Variable Map設定和呼叫](https://hackmd.io/MwVg7AZgDAJgTADgLTAEaSQFgMZQIxICcUqAhkgKZhQQIgBsUC9EFQA=#),得到此技能的傷害給**Set Damage**
![](https://i.imgur.com/A8bcnul.png)
## 整個主圖:
![](https://i.imgur.com/6AjKa3T.png)
# Toggle(開關技)
# Immediate(瞬發技)
# 新增Buff
## Passive被動技能Buff
## 一般Buff
# 新增Bullet
# 常用藍圖快捷鍵&操作
- 參考[常用藍圖快捷鍵&操作](https://hackmd.io/BwYwpgDCBsDMYFoIHZqICywJzIV4ARgEwIAmpAZgIYhYCsI6WsRQA===#)
###### tags: `UnrealEngine4` `Nobu`