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