• <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>
            posts - 72,  comments - 4,  trackbacks - 0
            gunz的ai處理(備忘)
            [更新]
            一個(gè)Actor更新中:
            1. m_TaskManager.Run(fDelta);
            2. ProcessNetwork(fDelta);
            3. ProcessAI(fDelta);
               處理actor->Brain->Think()中
            bool bFind = FindTarget();
            if ( bFind)
            {
              ProcessBuildPath( fDelta);
              ProcessAttack( fDelta);
            }
            4. ProcessMovement(fDelta);
            5. ProcessMotion(fDelta);
            一。ProcessAI()
                actor->Brain->Think()處理中產(chǎn)生一個(gè)Task
                一個(gè)任務(wù)有 移動(dòng),攻擊,延時(shí),轉(zhuǎn)向等,其中攻擊有肉搏,范圍,技能
                比如:actor->Brain->Think()中發(fā)了現(xiàn)敵人后在ProcessAttack()中產(chǎn)生一個(gè)skilltask存入到
                actor->m_TaskManager中
            二。m_TaskManager.Run()
               在在taskMgr中處理m_pCurrTask的3個(gè)步驟(start,run,complete):
               舉例: 如ZTask_Skill:
               1. OnStart()中
                 a.parent(是一個(gè)actor)->Skill(m_nSkill); // 進(jìn)行動(dòng)作輸入(動(dòng)作用了m_AniFSM進(jìn)行管理)
                 b.ZPostNPCSkillStart(ownerid,nSkill,Targetid,TargetPos);
                   這會(huì)生成一個(gè)id為MC_QUEST_PEER_NPC_SKILL_START的cmd并push到全局的m_CommandManager中
               2. OnRun()中
                   if時(shí)間到了則ZPostNPCSkillExecute(ownerid,nSkill,Targetid,TargetPos);
                   產(chǎn)生的命令id==MC_QUEST_PEER_NPC_SKILL_EXECUTE;
               3 . OnComplete()中
                   ZTask_Skill中無處理.
            三。m_pGameInterface->Update()中從m_CommandQueue中取出cmd, 對(duì)其:
                1. SendCommand(pCommand);
                2. OnCommand(pCommand);
                   switch(cmd->id)調(diào)用對(duì)應(yīng)的處理函數(shù),
                  例如:
                  a. id==MC_QUEST_PEER_NPC_SKILL_START時(shí)將調(diào)用OnPeerNPCSkillStart()
                     在其中通過uidOwner找得actor得到它的ZModule_Skills處理模塊傳入cmd的參數(shù)處理之.
                     這會(huì)進(jìn)行發(fā)起特效處理
                  b. id==MC_QUEST_PEER_NPC_SKILL_EXECUTE時(shí)時(shí)將調(diào)用OnPeerNPCSkillExecute()
                     在其中通過uidOwner找得actor得到它的ZModule_Skills處理模塊傳入cmd的參數(shù)處理之.
                     這會(huì)進(jìn)行攻擊特效處理:
                     1). 如果是bHitCheck標(biāo)志的特效,則轉(zhuǎn)讓全局的武器管理類處理:
                         m_WeaponManager.AddMagic( this, vMissilePos, vMissileDir, m_pOwner);進(jìn)行處理
                這里判斷如果循環(huán)次數(shù)減到0,則m_bEnable = false;
                     2).否則:
                       a. 如果有相機(jī)震動(dòng)標(biāo)志,則通知照相機(jī)震動(dòng)處理
                         GetCamera()->Shock( fPower*fDefaultPower, fDuration, rvector( 0.0f, 0.0f, -1.0f));
                       b. 遍歷所有角色,檢測(cè)是否范圍內(nèi)以及抗性沒抵消完傷害:
                          (1)是攻擊則
                             pObject->OnDamaged(..)
                             否則               
            pObject->OnHealing(..)
                          (2)限速:
                             pMovableModule->SetMoveSpeedRestrictRatio( 0, fDuration);
                           
                          (3)擊退:
                             pObject->AddVelocity( m_pDesc->fModKnockback * 7.f * -dir);
                      3). 特效燃燒效果:
            if(m_pDesc->szCastingEffect[0]) {
                if(type != eq_parts_pos_info_etc)
                efgmgr->AddPartsPosType(m_pDesc->szCastingEffect, Targetid,type,m_pDesc->nEffectTime);
            else 
            efgmgr->Add(m_pDesc->szCastingEffect, vPos,vDir,OwnerID,m_pDesc->nEffectTime);
            }
                      
            if(m_pDesc->szCastingEffectSp[0]) {
            ZGetEffectManager()->AddSp(m_pDesc->szCastingEffectSp,m_pDesc->nCastingEffectSpCount,
            vPos,vDir,m_pOwner->GetUID());
            }
                       3). 提示信息顯示處理
                       4). 聲音播放處理.
            四。ZWeaponMgr處理:
                上述的OnPeerNPCSkillExecute()處理中發(fā)現(xiàn)是飛行特效轉(zhuǎn)交給ZWeaponMgr來處理,所以這里說一下
               在這里會(huì)處理特效模型飛行并處理Explosion( type, pPickObject,pickdir);爆炸傷害!轉(zhuǎn)調(diào)用到pTarget->OnDamaged(..)
            posted on 2012-08-13 09:49 flipcode 閱讀(288) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久99久久99小草精品免视看| 中文字幕乱码久久午夜| 精品久久久久久无码中文字幕一区 | 久久久国产一区二区三区| 久久精品视屏| 欧美亚洲色综久久精品国产| 亚洲综合久久综合激情久久| 国产精品成人久久久| 九九精品99久久久香蕉| 久久国产三级无码一区二区| 性色欲网站人妻丰满中文久久不卡| 久久笫一福利免费导航| 国产精品久久久久久福利69堂| 99久久综合国产精品二区| 亚洲精品美女久久久久99| 99久久国产主播综合精品| 中文字幕乱码人妻无码久久| 久久精品国产99久久丝袜| 久久99热只有频精品8| 日韩久久久久中文字幕人妻| 亚洲成人精品久久| 国产亚洲精品美女久久久| 国产精品久久久香蕉| 国产亚洲色婷婷久久99精品91| 久久夜色精品国产噜噜亚洲AV| 亚州日韩精品专区久久久| 久久高潮一级毛片免费| 国产精品美女久久久| 精品国产一区二区三区久久久狼| 亚洲七七久久精品中文国产| 久久99精品国产麻豆不卡| 88久久精品无码一区二区毛片| 九九久久自然熟的香蕉图片| 999久久久无码国产精品| 久久久亚洲欧洲日产国码aⅴ| 亚洲国产另类久久久精品黑人| 一本色综合久久| 久久久久久久波多野结衣高潮| 国内精品综合久久久40p| 精品国产乱码久久久久久人妻| 久久久www免费人成精品|