技能系統(tǒng)解析
很抱歉告訴大家柬焕,簡書上不再更新我的個人 博 客,所有文章已經(jīng)搬運到我的新 博 客
技能系統(tǒng)需要根據(jù)當前的項目來劃分慨畸,例如:ACT游戲與MOBA游戲就有一些區(qū)別炒俱。
- ACT游戲大部分為了追求打擊感使用的是角色身上碰撞盒來觸發(fā)做技能奶稠,ACT游戲追求技能的銜接與多樣性陨献。
- MOBA游戲就不一樣盒犹,MOBA技能的觸發(fā)是由玩家點擊釋放,技能流程大部分也是根據(jù)動畫幀一套做到底眨业,多技能銜接絕對沒有ACT要求那么高急膀。
我們這里將要講的是用于MOBA/ARPG游戲的技能系統(tǒng),ACT游戲可作為參考龄捡,很多地方是大同小異的卓嫂。
技能系統(tǒng)的構(gòu)成
在國內(nèi)技能系統(tǒng)一般劃分為幾個模塊:角色本身,技能聘殖,Buff晨雳,衍生體;
角色本身:
這個模塊通俗來說就是角色在釋放技能時的動畫控制奸腺,位移控制餐禁,音效,特效等洋机,與操控角色本體相關(guān)的事件表現(xiàn);
技能(Skill):
這個就是技能本身洋魂,它涵蓋技能釋放事件(玩家通過UI點擊調(diào)用事件)绷旗,技能施法條件(CD與藍量檢測),技能施法控制(技能方向位置副砍,角色播放動畫)衔肢,技能結(jié)束回調(diào);
Buff:
這個是技能系統(tǒng)的核心豁翎,Buff用來傳遞施加者給被施加者發(fā)送的指令角骤,例如角色A想給角色B造成多少傷害,那么角色A可以創(chuàng)造一個傷害Buff心剥,這個Buff只用來傳遞傷害邦尊,在創(chuàng)造時告訴Buff角色A自身的攻擊力是多少,要施加給誰优烧,然后將這個帶有A的攻擊力的傷害Buff丟給B蝉揍,這時候Buff開始運轉(zhuǎn),給B造成傷害畦娄;再舉個例子又沾,角色A技能帶有擊飛效果弊仪,那么就是角色A給角色B傳遞了擊飛Buff,這個Buff在運作時操控B擊飛位移杖刷;
這里需要注意励饵,一個技能可能攜帶多個Buff,例如一個技能釋放后滑燃,要會讓角色受傷役听、眩暈、還要讓角色在接下來數(shù)秒內(nèi)被減數(shù)不瓶,這里考慮復(fù)用性可以拆分成三個Buff(傷害Buff禾嫉、眩暈Buff、減速Buff)蚊丐,然后同時拋給被技能命中的角色熙参。
Buff并不是技能特有的,有些Buff是被動Buff麦备,可能角色初始化或者購買裝備后就有孽椰,例如復(fù)活甲這件裝備,購買后其實就是給角色增加了一個復(fù)活被動Buff凛篙,Buff一直掛在在角色身上運作黍匾,等待角色血量為零后才出發(fā),調(diào)用后面的復(fù)活角色邏輯呛梆。甚至還有一些羈絆Buff锐涯,同屬性的角色存在時增加攻擊力等,這也是Buff的一種填物,Buff萬千纹腌,總的來說逃不過幾個大類,后面再具體介紹滞磺。
衍生體:
衍生體大多數(shù)人喜歡把它細分為彈道和法術(shù)場升薯,彈道就是指帶有飛行物的技能(導(dǎo)彈,火球等)击困,法術(shù)場就是指一個技能會創(chuàng)造一塊區(qū)域涎劈,對這個區(qū)域內(nèi)敵人造成傷害。它們本質(zhì)上都是技能衍生出來的物體阅茶,角色技能動畫與衍生體是分離的蛛枚,角色技能本身不造成傷害,由這個衍生物添加Buff造成傷害脸哀,例子的話:LOL阿貍的Q技能坤候,金克斯的R都是彈道,火男的W企蹭,千玨的R都是法術(shù)場白筹,其實還有一些東西也是衍生物智末,例如大頭的炮臺,安妮的熊徒河,這些都是技能衍生出來的物體系馆。
技能施法流程
技能施法流程分為以下幾個過程:
技能前搖
技能耆那要分普通前搖與技能吟唱
普通前搖
舉例就是最簡單的近戰(zhàn)角色平A,將角色平A視為一個技能時可以劃分為三個階段:前搖顽照,結(jié)算由蘑,后搖;其中結(jié)算就是指平A砍刀敵人打出傷害的那一瞬間代兵,那么前搖就是指打出傷害前的人物播放的動畫(角色揮刀砍向敵人的過程)尼酿。這一階段需要處理動畫同步過程,如果前搖動畫結(jié)束了植影,邏輯上的前搖過程還沒結(jié)束裳擎,就會出現(xiàn)畫面上的延遲問題,除此之外還需要處理讀條過程是否允許被打斷思币,允許被什么樣等級的Buff打斷鹿响,以及被打斷后續(xù)的動畫和技能CD處理。一般來說普通的傷害Buff是不會打斷平A的谷饿,但是眩暈惶我、擊飛這種強制Buff會打斷平A的前搖過程。
技能呤唱
技能吟唱通常與技能前搖是重復(fù)的博投,表現(xiàn)上可細分為讀條與蓄力
- 讀條
舉例來說就是LOL角色回城的進度條過程绸贡、者死歌放大讀條過程,在這一過程我們需要處理人物動畫播放時長與讀條時間同步毅哗,還需要處理和普通前搖一樣的Buff打斷機制听怕,例如回城過程收到普通傷害Buff就會被打斷,但是死歌放大需要控制技能才會被打斷
- 蓄力
舉例來說就是維魯斯釋放Q技能玩家長按Q鍵蓄力過程黎做、澤拉斯Q技能蓄力過程叉跛,這一過程需要監(jiān)聽玩家的長按輸入過程松忍,將輸入的時間數(shù)值傳輸給后續(xù)的技能蒸殿,改變結(jié)算時傷害或者技能長度狀態(tài)等,然后就是和讀條一樣需要注意的動畫和打斷機制
技能結(jié)算
技能結(jié)算這一過程由傷害Buff來完成鸣峭,計算攻擊角色的各種屬性和技能加成宏所,以及被攻擊角色的各種抗性屬性和某些特殊的無敵、傷害減免Buff摊溶。結(jié)算完成后改變被攻擊玩家的血量爬骤,如果攻擊角色有吸血Buff,那么還需要將最終的傷害返還給吸血Buff進行計算莫换。最后播放一些流血動畫霞玄。
技能后搖
技能后搖在前面技能前搖中有講到骤铃,本質(zhì)上就是人物的后搖動畫(打出傷害后,角色收回刀回到默認動畫狀態(tài)過程)坷剧,這一過程是否需要被打斷需要根據(jù)項目需求來惰爬,例如LOL中后搖就可以被取消,無需等待后搖結(jié)束就可以直接釋放下個技能惫企,瑞文的光速Q(mào)A就是利用了這一原理撕瞧。
再談Buff
根據(jù)上文一些對Buff的描述也能感覺到Buff是個很抽象的概念,它在技能系統(tǒng)中無處不在狞尔,buff的設(shè)計是技能系統(tǒng)的核心丛版,需要高擴展性。在此舉例一些常見類型的Buff
-
傷害Buff
用于計算攻擊方與受擊方的角色屬性與技能加成偏序,這一過程分為四部:1.先計算受擊方的被動Buff層和狀態(tài)層页畦,例如無敵Buff,傷害減免Buff禽车;2.計算完Buff后才能進入角色的血量狀態(tài)改變寇漫;3.觸發(fā)攻擊方的一些回血Buff,或疊加Buff殉摔,4.播放受擊特效
-
被動Buff
這些Buff常常附帶特效州胳,例如復(fù)活甲,日炎逸月,紅藍霸符栓撞,他們的機制也不一樣,有些是改變角色的屬性(加移速)碗硬,有些是攻擊時代入傷害(耀輝)瓤湘,有些是等待觸發(fā)(復(fù)活甲),有些是衍生Buff(紅Buff)恩尾。他們都有一個共同點弛说,需要監(jiān)聽角色的各種屬性或技能各個流程屬性。
-
控制Buff
這一部分Buff有擊飛翰意、擊退木人、眩暈等,它們是一種持續(xù)性Buff冀偶,在buff觸發(fā)期間能夠鎖定角色一些屬性(移動醒第、攻擊等),同時還能改變角色的一些屬性(位置)
-
一些特殊Buff
凈化buff进鸠,它可以查找角色中的所有控制Buff稠曼,將其清除。無敵Buff客年,實現(xiàn)方式可以是鎖血霞幅,也可以是給角色添加無敵標志漠吻。
Buff攜帶屬性也是很多的,舉例來說有司恳,buff優(yōu)先等級侥猩,buff打斷等級,buff類型等等抵赢,根據(jù)項目需要增加
技能系統(tǒng)編輯器的實現(xiàn)
常見的編輯器有藍圖和Unity編輯器欺劳、配表,這些各有各的優(yōu)點铅鲤,總的來說還是要根據(jù)項目需求和策劃熟悉度來做(雖然大部分策劃都會選擇配表)划提。
需要注意的是無論哪種編輯器,最終都要滿足批量修改和Json導(dǎo)出這兩個需求邢享,一個是滿足策劃維護鹏往,一個是滿足服務(wù)端使用。