185 views
 owned this note
<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===#)