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

posts - 311, comments - 0, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

三、CreatureAI

 

CreatureAI這個類并不大,構造函數要傳一個Creature的指針,然后就是20來個接口函數。

構造函數:

explicit CreatureAI(Creature* creature) : m_creature(creature) {}

接口函數不多,可以全部列出來:

// Called if IsVisible(Unit *who) is true at each *who move, reaction at visibility zone enter

virtual void MoveInLineOfSight(Unit *) {}

// Called for reaction at enter to combat if not in combat yet (enemy can be NULL)

virtual void EnterCombat(Unit* /*enemy*/) {}

// Called for reaction at stopping attack at no attackers or targets

virtual void EnterEvadeMode() {}

// Called at reaching home after evade

virtual void JustReachedHome() {}

// Called at any heal cast/item used (call non implemented)

virtual void HealBy(Unit * /*healer*/, uint32 /*amount_healed*/) {}

// Called at any Damage to any victim (before damage apply)

virtual void DamageDeal(Unit * /*done_to*/, uint32 & /*damage*/) {}

// Called at any Damage from any attacker (before damage apply)

// Note: it for recalculation damage or special reaction at damage

// for attack reaction use AttackedBy called for not DOT damage in Unit::DealDamage also

virtual void DamageTaken(Unit * /*done_by*/, uint32 & /*damage*/) {}

// Called when the creature is killed

virtual void JustDied(Unit *) {}

// Called when the creature kills a unit

virtual void KilledUnit(Unit *) {}

// Called when the creature summon successfully other creature

virtual void JustSummoned(Creature* ) {}

virtual void SummonedCreatureDespawn(Creature* /*unit*/) {}

// Called when hit by a spell

virtual void SpellHit(Unit*, const SpellEntry*) {}

// Called when spell hits creature's target

virtual void SpellHitTarget(Unit*, const SpellEntry*) {}

// Called when the creature is target of hostile action: swing, hostile spell landed, fear/etc)

virtual void AttackedBy(Unit* attacker);

// Called when creature is spawned or respawned (for reseting variables)

virtual void JustRespawned() {}

// Called at waypoint reached or point movement finished

virtual void MovementInform(uint32 /*MovementType*/, uint32 /*Data*/) {}

// Called at text emote receive from player

virtual void ReceiveEmote(Player* /*pPlayer*/, uint32 /*text_emote*/) {}

// Called when creature attack expected (if creature can and no have current victim)

// Note: for reaction at hostile action must be called AttackedBy function.

virtual void AttackStart(Unit *) {}

// Is unit visible for MoveInLineOfSight

virtual bool IsVisible(Unit *) const { return false; }

// Called when victim entered water and creature can not enter water

virtual bool canReachByRangeAttack(Unit*) { return false; }

// Called at World update tick

virtual void UpdateAI(const uint32 /*diff*/) {}

可以看到,大部分接口是事件觸發(fā)和消息通知。UpdateAI我放到最后,這個和別的接口函數不同,是負責AI狀態(tài)的更新處理。

以CreatureAI為基類,派生出了PetAI、CreatureEventAI、GuardAI、ReactorAI、AggressAI、TotemAI和NullCreatureAI 7類基本AI。Creature的AIM_Initialize()函數,對AI進行初始化,根據Creature的類型選擇不同的AI。值得提出的是,Mangos還支持ScriptAI,對于非寵物類的生物支持擴展腳本AI。Mangos的腳本系統(tǒng)我還沒有怎么看,有空研究下。

可以看到Mangos的AI設計還是比較傳統(tǒng)的,Creature類相當于身體和物理存在,干很多“傻大粗”的事情;AI相當于Creature的大腦,對事件進行響應和處理,指揮著身體物理存在進行反應。

下面可以看下寵物AI的一段代碼:

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久综合狠狠综合久久综青草| 亚洲伊人网站| 欧美成人午夜激情| 亚洲精品1234| 亚洲国产高清视频| 欧美巨乳在线| 亚洲一区二区三区涩| 亚洲一区高清| 国产一区二区三区久久 | 欧美日韩在线一二三| 亚洲一区在线直播| 欧美亚洲视频在线观看| 国产无一区二区| 久久理论片午夜琪琪电影网| 久久久国产精品一区二区三区| 亚洲第一区色| 亚洲美女淫视频| 国产亚洲一区在线| 欧美激情第3页| 在线视频精品一区| 亚洲欧美中文另类| 亚洲日韩欧美视频| 亚洲午夜女主播在线直播| 国内精品久久久久久 | 亚洲综合社区| 亚洲国产午夜| 亚洲在线成人| 亚洲全部视频| 亚洲欧洲99久久| aaa亚洲精品一二三区| 亚洲欧美日韩成人| 99在线热播精品免费| 欧美一区二区三区四区在线观看| 亚洲国内在线| 午夜精品久久久久久久蜜桃app| 亚洲经典视频在线观看| 亚洲欧美日韩国产| 一区二区三区你懂的| 久久成人免费| 亚洲一线二线三线久久久| 久久在线91| 久久久国产精品亚洲一区 | 久久精品一区二区三区不卡| 亚洲私拍自拍| 欧美成人三级在线| 老色鬼精品视频在线观看播放| 国产精品xxx在线观看www| 亚洲第一在线| 精品动漫3d一区二区三区免费| 亚洲少妇最新在线视频| 亚洲精品综合| 免费观看成人www动漫视频| 久久久久国产精品麻豆ai换脸| 国产精品不卡在线| 亚洲精品在线电影| 日韩视频一区二区三区在线播放免费观看 | 国产精品你懂的在线欣赏| 亚洲激情一区二区三区| 在线观看亚洲一区| 久久成人在线| 久久久免费av| 国内精品视频666| 欧美一区激情视频在线观看| 欧美在线免费视屏| 国产精品麻豆欧美日韩ww| 一区二区三区四区在线| 一区二区三区精品国产| 欧美日本三区| 一本色道久久综合亚洲精品小说 | 国产一区在线播放| 欧美一区二区三区久久精品茉莉花| 亚洲欧美日韩视频一区| 久久九九国产| 国产一区二区在线观看免费播放 | 欧美国产日本韩| 亚洲国产日韩欧美综合久久| 免费91麻豆精品国产自产在线观看| 理论片一区二区在线| ●精品国产综合乱码久久久久| 久久久久国产精品一区| 免费观看在线综合色| 亚洲国产91精品在线观看| 欧美aⅴ99久久黑人专区| 亚洲日本va午夜在线影院| 亚洲一区二区三区精品动漫| 国产精品视频第一区| 欧美亚洲日本一区| 欧美大片免费观看在线观看网站推荐| 狠狠色丁香婷婷综合影院| 久久永久免费| 在线天堂一区av电影| 久久精品夜色噜噜亚洲aⅴ| 一区在线观看| 欧美日韩精品不卡| 新片速递亚洲合集欧美合集| 欧美大片在线看| 亚洲私人影院在线观看| 国内外成人免费激情在线视频| 猫咪成人在线观看| 99亚洲一区二区| 久久网站热最新地址| 日韩一级网站| 黑人巨大精品欧美一区二区小视频 | 亚洲欧洲99久久| 在线免费观看欧美| 欧美午夜片在线免费观看| 久久久久久网| 中日韩美女免费视频网站在线观看| 久久久欧美精品sm网站| 99热免费精品在线观看| 国产亚洲一区二区精品| 欧美精品在线免费| 久久国产精品免费一区| 在线亚洲免费视频| 欧美激情精品久久久久久黑人 | 亚洲字幕在线观看| 亚洲激情午夜| 红桃视频亚洲| 国产欧美精品va在线观看| 欧美国产视频在线观看| 久久精品国产v日韩v亚洲| 一区二区三区 在线观看视频 | 一本一道久久综合狠狠老精东影业| 国内激情久久| 国产欧美精品在线播放| 欧美色图一区二区三区| 欧美大片一区二区三区| 久久成人免费电影| 午夜在线视频一区二区区别| 在线综合亚洲欧美在线视频| 亚洲国产精品一区二区久| 蜜桃久久精品一区二区| 久久亚洲电影| 久久久久www| 久久天天躁狠狠躁夜夜爽蜜月| 欧美在线视频观看| 午夜久久黄色| 欧美一区日韩一区| 久久激情久久| 久久久久久9| 老司机午夜精品| 欧美www视频| 亚洲高清视频在线观看| 亚洲国产精品www| 亚洲欧洲日韩在线| 国产精品午夜在线| 国产欧美日韩另类视频免费观看 | 久久精品国产一区二区电影| 欧美一区精品| 欧美中文字幕视频| 午夜精品免费| 亚洲日本va午夜在线电影| 欧美96在线丨欧| 亚洲自拍都市欧美小说| 性色av香蕉一区二区| 亚洲欧美日韩天堂| 亚洲在线免费| 一区二区三区久久久| 99在线热播精品免费| av成人免费| 妖精视频成人观看www| 亚洲永久免费精品| 亚洲综合首页| 欧美一区二区三区喷汁尤物| 日韩一区二区高清| 亚洲欧美欧美一区二区三区| 亚洲欧美一区二区三区极速播放| 亚洲一区在线播放| 欧美中文字幕不卡| 狂野欧美激情性xxxx| 亚洲高清网站| 亚洲韩国精品一区| 亚洲午夜视频在线观看| 亚洲女同精品视频| 亚洲欧美日韩精品久久久久| 久久婷婷国产麻豆91天堂| 蜜臀va亚洲va欧美va天堂| 欧美寡妇偷汉性猛交| 欧美日韩在线影院| 黄色成人在线网址| 亚洲精品国久久99热| 亚洲午夜极品| 亚洲一区二区成人| 蜜月aⅴ免费一区二区三区 | 国产亚洲一区二区三区在线观看 | 免费日韩av电影| 欧美日韩三级一区二区| 国产精品一区二区在线观看网站| 在线日韩av片| 一区二区三区回区在观看免费视频| 亚洲一区二区在线看| 中日韩美女免费视频网址在线观看| 久久精品亚洲| 亚洲国产高清视频| 午夜亚洲福利| 国产精品成人aaaaa网站| 国内久久视频| 亚洲一区三区电影在线观看| 欧美亚洲免费电影| 夜久久久久久|