青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 72,  comments - 4,  trackbacks - 0
dota中的道具/技能及動作狀態(tài)機 相關原型 設計備忘::
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// dota中的道具/技能及動作狀態(tài)機 相關原型 設計備忘::
/*
                                             flipcode@qq.com 的草案備忘(測試通過)
   商店用擁有很多kToyItem供購買,角色通過購買也可以得到很多kToyItem。
   kToyItem用于kToy物品類的顯示封裝,對應有一個物品類kToy以及儲存在哪個格子中,價格多少等信息。
   kToy中包含3種類型:1.kEquip(裝備),2.kUse(使用), 3.kSkill(技能)
   這3個類中各自包含一個listAction(動作列表),列表中存放的是kAction動作基類。
   kAction類中有Select()和IsValid()以及Execute()函數(shù);
   1. kEquip中的Update()中調(diào)用listAction中每一個IsValid()函數(shù)來判斷是否執(zhí)行對應的Execute();
      
   2. kUse中的Use()函數(shù)中調(diào)用listAction中每一個IsValid()函數(shù)來判斷是否執(zhí)行對應的Execute();
   
   3. kSkill中的select()函數(shù)遍歷listAction中每一個Select()函數(shù)來判斷是否能選擇該技能,都通過才選擇。
      kSkill中的Start()函數(shù)中調(diào)用listActionStart中每一個IsValid()函數(shù)來判斷是否執(zhí)行對應的Execute();
      kSkill中的Cast()函數(shù)中調(diào)用listActionCast中每一個IsValid()函數(shù)來判斷是否執(zhí)行對應的Execute();
  說明:
  kSkill設計時考慮到施放前搖,故用了start()函數(shù)來播放前搖動作/特效,然后等待前搖時間完成再調(diào)用cast()函數(shù)來播放對應的施放動作/特效。
  當特效完成后再處理listAction(動作列表)。dota中還有后搖,我理解成技能冷卻時間(不知道對否),當cast()時,skill就可以開始冷卻了。
   [說明]
   角色屬性有:基礎屬性,附加屬性(直接+),加成屬性(*(1+比例)),而
   kAction的派生類kActionProperty專用于處理kEquip(裝備)提高屬性: 
   它用VARY_TYPE類型指明針對某種屬性, 如: str, int, dex, HP/MP(min/max), atk(min/max)。。。等.
   它用PROPERTY_METHOD區(qū)別是直接加還是比例乘:add/rate。
   這樣角色如果擁有kToyItem的話,那么在更新中就會調(diào)用每個物品的kEquip的Update,從而把屬性更新到角色的add_data[類型]和rate_data[類型]中,
   接著角色的更新就會用(base_data[]+add_data[])*(1+rate_data[])的公式來處理之(當然,dota的一些特殊的屬性使用另外的計算方法)
   kAction可以方便地擴充很多普通派生處理類,只要在相應的Execute()進行處理即可實現(xiàn)想要的功能,比如可能派生一個名為kActionHurt類,
   然后把它加入到kUse/kSkill中的listAction列表中,這樣只要點擊使用,即可Execute中處理加血/扣血。
   另外從kAction中派生的還有一些特殊類型:
   1. kActionEffect(包含listAction成員):
      kActionEffect執(zhí)行Execute()時會調(diào)用全局的kEffectManager(特效管理器)的PlayEffect(effect_class_name)函數(shù)來產(chǎn)生一個kEffect的派生類對象, 并轉(zhuǎn)讓listAction給它。
      kEffectManager用來管理listEffect列表,更新處理其中每一個kEffect。
      kEffect類中包含一個listAction(動作列表)指針,它是由kActionEffect在產(chǎn)生它時傳遞過來的,這樣在特效完成并且條件成立時(比如命中敵人)調(diào)用listAction中每一個IsValid()函數(shù)來判斷是否執(zhí)行對應的Execute();
   2. kActionState(包含listAction成員):
      kActionState執(zhí)行Execute()時會調(diào)用全局的kStateManager(狀態(tài)管理器)的PlayState(state_class_name)函數(shù)來產(chǎn)生一個kState的派生類對象, 并轉(zhuǎn)讓llistAction給它。
      kStateManager用來管理listState列表,更新處理其中每一個kState。
      kState類中包含一個listAction(動作列表)指針, 它是由kActionState在產(chǎn)生它時傳遞過來的,這樣在該狀態(tài)完成時會調(diào)用listAction中每一個IsValid()函數(shù)來判斷是否執(zhí)行對應的Execute();
  注意: kState隊列的執(zhí)行優(yōu)先于kAIState隊列,只有kState列表為空時,kAIState才有機會執(zhí)行.
  關于kState和kAIState的區(qū)別:
  a. 動作觸發(fā)的狀態(tài)機:
  kState主要是kAction(動作)觸發(fā)引起角色的一些臨時被動行為,比如kState被擊退狀態(tài),被暈狀態(tài),狀態(tài)之間可以并行,或者串行(通過kState中的listAction列表掛接,在kState完成時遍歷調(diào)用listAction)。
  比如:
     可以將kActionHurt加入到kStateStun(被暈)狀態(tài)中的listActon中,然后再把kStateStun加到kStateThrustBack(被擊退)中,然后再把kStateThrustBack加入到kShotEffect的listAction中,接著給kActionEffect設置對應的kShotEffect
  并把kActionEffect加入到kToy中的kSkill的listActon中.這樣,當技能使用時就會觸發(fā)一個kActionEffect播放kShotEffect,這個kShotEffect播放完成時會觸發(fā)kStateThrustBack將角色擊退到一邊,退到一邊完成后接著觸發(fā)kStateStun讓角色暈上一會。
  而如果前面的kShotEffect是范圍特效的話,那在特效傷害范圍的角色都被擊退后再暈上一會(由于擊退和暈是動作狀態(tài)優(yōu)先于角色的AI狀態(tài),所以這時角色的AI是不運行的,只有等擊退后暈完了AI才醒過一繼續(xù))。
  b. AI行為狀態(tài)機:
  kAIState主要是由kAIBrain(大腦)思考引起的一些主動的AI行為,比如kAIRoam漫步, kAIPursue追捕等,各AI狀態(tài)之間不能并行或串行只能切換。在任何時候包括在kAction的處理中也可以進行角色的kAIState切換。
  
   3. kActionTrigger:
      kActionTrigger中擁有一個事件名稱列表,當該action被execute時會通過kEventManager->PostEvent(Event_Name)來發(fā)出事件消息。這時事件監(jiān)聽列表中的對應事件號的觸發(fā)器先判斷kCondition是否成立,是則調(diào)用相應的觸發(fā)器的kAction動作。
   關于觸發(fā)器:
   kTrigger觸發(fā)器,擁有l(wèi)istEventName, kCondition, kAction。事件管理器kEventManager可以創(chuàng)建kTrigger,并添加觸發(fā)器監(jiān)聽的事件列表(listEventName),條件(kCondition),以及動作(kAction)。 
   當事件發(fā)生時可隨時調(diào)用kEventManager->PostEvent(Event_Name)來發(fā)出消息,事件的監(jiān)聽者kTrigger先判斷kCondition是否成立,是則調(diào)用kAction。
   調(diào)用的kAction即前面所說的動作基類,當動作完成時可以再次PostEvent(...)以便觸發(fā)另外的觸發(fā)器。
   4. kActionPose:
      這個Action只是簡單地調(diào)用一下角色的動作播放。
   5. kActionSleep(包含listAction成員):
      這個kAction只是延遲一段時間,時間到了再調(diào)用listAction各成員的execute()函數(shù).
   由以上設計可以知道每一個kToy道具均可以由不同的處理函數(shù)并行及串行(注意:這里說的串/并行跟多線程無關,概念不一樣)組合而成,這樣就可以實現(xiàn)動作或特效的串行/并發(fā)執(zhí)行,以及觸發(fā)相應的處理。
*/
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
posted on 2012-08-13 09:58 flipcode 閱讀(839) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产美女| 欧美激情一区二区三区不卡| 亚洲男女自偷自拍图片另类| 亚洲日本电影在线| 在线观看中文字幕不卡| 狠狠干狠狠久久| 亚洲丰满少妇videoshd| 亚洲国产精品精华液网站| 亚洲欧洲在线看| 一区二区毛片| 欧美怡红院视频| 老妇喷水一区二区三区| 欧美黑人国产人伦爽爽爽| 亚洲精品少妇30p| 中日韩视频在线观看| 亚洲欧美一区二区视频| 欧美一区二区日韩| 久久精品国产清高在天天线| 美女露胸一区二区三区| 欧美色图五月天| 精品1区2区| 亚洲图片欧洲图片日韩av| 欧美制服丝袜| 亚洲国产精品va在线看黑人| 亚洲精品美女在线| 欧美一区二区| 欧美精品国产精品| 国产视频观看一区| 99re6这里只有精品| 久久电影一区| 99国产精品久久久久久久成人热 | 国产视频欧美| 亚洲国产精品第一区二区三区| 亚洲深夜福利网站| 老司机67194精品线观看| 亚洲三级电影全部在线观看高清| 亚洲午夜羞羞片| 久久女同互慰一区二区三区| 欧美激情亚洲综合一区| 一本大道久久精品懂色aⅴ| 亚洲天天影视| 久久99伊人| 亚洲破处大片| 久久久久久69| 亚洲午夜精品在线| 欧美日韩国产123| 一本色道久久综合亚洲91 | 一区二区三区四区在线| 亚洲欧洲精品一区二区| 亚洲乱码精品一二三四区日韩在线| 一本色道久久综合亚洲精品高清| 欧美一级网站| 亚洲日本久久| 久久久久国内| 国产欧美日韩91| 亚洲欧美三级在线| 一区二区免费在线播放| 欧美顶级大胆免费视频| 尤物网精品视频| 久久亚洲一区二区三区四区| 午夜精品免费| 国产亚洲成精品久久| 亚洲制服少妇| 亚洲欧美中文日韩在线| 国产九色精品成人porny| 欧美一级视频一区二区| 午夜久久99| 在线观看日韩www视频免费| 美女黄毛**国产精品啪啪| 久久久综合网| 亚洲日本激情| 99riav久久精品riav| 欧美亚洲日本一区| 国产日韩亚洲欧美综合| 亚洲一区二区在线看| 久久久水蜜桃| 欧美一区亚洲| 亚洲欧洲一级| 欲香欲色天天天综合和网| 欧美一级片在线播放| 国产亚洲欧美一区二区三区| 欧美亚洲免费电影| 免费观看日韩av| 亚洲国产日韩一区| 亚洲电影免费观看高清完整版在线| 久久精品一区二区三区不卡牛牛| 韩国av一区| 久久精品国产91精品亚洲| 欧美成人精品福利| 欧美福利视频网站| 亚洲欧美精品伊人久久| 午夜久久福利| 亚洲人成网站777色婷婷| 亚洲美女区一区| 国产乱码精品1区2区3区| 噜噜噜91成人网| 欧美日韩亚洲一区在线观看| 中文av字幕一区| 欧美在线免费观看亚洲| 日韩亚洲欧美成人| 欧美一级片在线播放| 99精品99| 久久免费的精品国产v∧| 亚洲视频在线视频| 欧美一级大片在线观看| 欧美大片在线观看一区二区| 亚洲国产精品毛片| 99精品欧美一区二区三区综合在线 | 亚洲国产精品传媒在线观看| 一区二区三区四区在线| 男女精品视频| 夜夜夜精品看看| 亚洲国产高清高潮精品美女| 亚洲国产婷婷香蕉久久久久久99| 亚洲综合色丁香婷婷六月图片| 国产精品久久久久久福利一牛影视| 久久久精品一区| 久久9热精品视频| 欧美国产综合视频| 亚洲精品在线观看视频| 国产精品电影网站| 正在播放亚洲一区| 免费观看一区| 一区二区三区成人精品| 欧美肉体xxxx裸体137大胆| 亚洲国产成人久久综合| 久久免费国产精品| 国产麻豆日韩欧美久久| 亚洲一级在线观看| 久久久久久久网| 在线视频一区观看| 欧美韩日高清| 欧美成人午夜77777| 亚洲欧美一级二级三级| 亚洲美女毛片| 欧美成ee人免费视频| 香蕉国产精品偷在线观看不卡 | 免费久久99精品国产自| 欧美大片免费观看| 亚洲日韩欧美一区二区在线| 中国成人亚色综合网站| 欧美特黄一区| 亚洲在线观看视频网站| 亚洲欧美日韩国产精品| 欧美日韩一区二区三区在线视频 | 亚洲午夜激情网站| 国产一区二区在线观看免费| 国产精品久久久对白| 欧美久久九九| 亚洲免费综合| 欧美中文在线字幕| 久久精品国产亚洲高清剧情介绍| 99视频一区二区| 国产精品日韩一区| 久久人人精品| 国产精品v欧美精品∨日韩| 久久精品国产第一区二区三区| 久久久久国产精品午夜一区| 日韩午夜免费| 欧美日韩福利视频| 久久久久久久久久久久久女国产乱| 在线观看欧美日本| 亚洲福利视频网站| 亚洲级视频在线观看免费1级| 欧美日韩国产三级| 欧美精品日韩一本| 久久久99精品免费观看不卡| 欧美久久综合| 亚洲二区视频| 亚洲第一页中文字幕| 欧美自拍偷拍| 久久亚洲一区二区| 激情综合色丁香一区二区| 免费视频一区| 欧美福利视频在线观看| 99国产精品视频免费观看| 在线亚洲一区观看| 亚洲精品一二三区| 久久不射中文字幕| 美女视频网站黄色亚洲| 久久精品视频一| 欧美午夜不卡在线观看免费 | 久久国产一区二区三区| 亚洲人成久久| 在线视频一区观看| 亚洲国产日韩一级| 久久影院午夜论| 国产精品第一页第二页第三页| 欧美日韩亚洲一区二区三区在线 | 国产精品久久久久国产a级| 一二美女精品欧洲| 国产精品久久久久91| 国产一区二区三区电影在线观看| 一区二区三区在线视频免费观看| 亚洲福利国产精品| 国产精品视频自拍| 亚洲男人的天堂在线观看| 亚洲欧美另类综合偷拍| 欧美视频一区二区三区四区| 亚洲精一区二区三区|