域名注冊(cè) 網(wǎng)站建設(shè) 好做嗎網(wǎng)站頁(yè)面分析
一個(gè)角色同一時(shí)間可能存在多個(gè)Skill,一個(gè)當(dāng)前播放的主動(dòng)技能,還有好幾個(gè)不在播放中,但是也沒(méi)有結(jié)束的。
技能事件: 實(shí)現(xiàn)具體的技能功能,技能動(dòng)作的執(zhí)行都是通過(guò)觸發(fā)事件來(lái)觸發(fā)的,比如(時(shí)間幀,命中,受傷,正常結(jié)束,異常結(jié)束)
公共:移動(dòng)(因?yàn)樾枰?wù)器計(jì)算移動(dòng)位置),播放動(dòng)畫,標(biāo)準(zhǔn)子物體,按鍵跳轉(zhuǎn),線框判定,開啟包圍盒和關(guān)閉包圍盒(服務(wù)器記錄標(biāo)識(shí),不會(huì)一直都開著,性能問(wèn)題),技能段跳轉(zhuǎn)
客戶端:播放音效,模型變色,播放特效
服務(wù)器事件:修改屬性相關(guān)
動(dòng)畫事件:1.根據(jù)時(shí)間幀的方式方便策劃配置 2.動(dòng)畫事件策劃不方便配置,可能很多動(dòng)作文件都要配一遍,編輯器下可以復(fù)制黏貼,一般都是特殊的需要代碼處理的動(dòng)畫中斷點(diǎn)才配置比如拔刀收刀只有主角有。StateMachineBehaviour腳本,掛在動(dòng)畫上主要是為了動(dòng)畫開始和結(jié)束時(shí)候的回調(diào)方便傳給邏輯代碼使用,比如采集動(dòng)作的完成。
動(dòng)作和特效都是0幀起手要馬上播放,但是因?yàn)榧虞d有延遲時(shí)間,怎么解決?
1.根據(jù)表格里面預(yù)加載一些動(dòng)畫 2.加載動(dòng)畫完成后根據(jù)配置是否從頭開始播放,否則計(jì)算跳過(guò)加載完成時(shí)間-開始調(diào)用時(shí)間,從新的時(shí)間段開始播放。
狀態(tài)模式的運(yùn)用: 加載過(guò)程中(加載開始,加載中,加載完成,加載失敗),位移中(根據(jù)速度情況不同狀態(tài))
動(dòng)畫加載:根據(jù)配置,基本上都是動(dòng)態(tài)加載,加載出來(lái)后可定時(shí)根據(jù)時(shí)間間隔卸載或者永不卸載,可配置預(yù)加載,異步加載的好處:角色剛出來(lái)加載狀態(tài)機(jī)需要花費(fèi)很多時(shí)間和內(nèi)存,減少加載時(shí)間和內(nèi)存占用空間。
主角移動(dòng)協(xié)議:
通過(guò)搖桿更新,定時(shí)都會(huì)同步數(shù)據(jù),通過(guò)搖桿獲取輸入,獲得輸入方向,主端進(jìn)行移動(dòng),然后發(fā)送位置,速度和方向
狀態(tài)同步:一般跟著動(dòng)作,比如一個(gè)技能段播放一個(gè)動(dòng)作其中觸發(fā)多個(gè)技能事件,發(fā)送技能開始協(xié)議傳簡(jiǎn)要的dstSid和技能id等數(shù)據(jù),等到技能段的時(shí)候同步目標(biāo)具體的buff狀態(tài),符文屬性等相關(guān)信息,技能段也是協(xié)議數(shù)據(jù)量最大的地方。
客戶端上只有公共事件才需要發(fā)技能事件start給服務(wù)器
技能中的位移:定時(shí)時(shí)間間隔發(fā)送更新位置信息,幀同步