简述游戏开发中的状态机.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

简简述述游游戏戏开开发发中中的的状状态态机机

为为什什么么我我们们需需要要状状态态机机

实⾏较多状态的⾓⾊,把动作全写在个部分中会导致维护成本⾼,拓展性低

例如:⾛路,跳跃,射击,躲避的相互转换,有些可以转换,有些不能,实现逻辑复杂

(满屏幕都是if-else)

状状态态模模式式switch实实现现

//包含着所有的状态

enumclassState{StateA,StateB,StateC,...}activeState;

...

//通过switch语句切换状态,根据具体情况实现细节

switch(activeState)

{

caseState.StateA

...

break;

caseState.StateB

...

break;

}

...

状态机的原形,⽤个枚举表⽰当前的状态,通过填充完善switch语句实现状态之间的切换,但是依然有维护成本⾼拓展低的缺点(虽然确

实是⽐⽤if-else堆好)

FiniteStateMachine((FSN))有有限限状状态态机机

最基本的状态机,般来说其他状态机都是这种状态机的变体

对于状态机的理解,最好就是画个图(如图结构,⽅框是状态,箭头是状态之间的联系)

有限状态机强调的是状态之间的切换,以及对不同状态的封装,所以实现⽅法般可以根据需求调整

以下参考了《游戏⼈⼯智能》的实现

⾸先需要个基类State和基类Translation

//状态基类,所有状态都继承这个类

classState

{

public

virtual~State(){}

virtualOnStateEnter(){}//进⼊此状态执⾏次

virtualOnUpdate(){}//每帧执⾏次

virtualOnStateExit(){}//跳出状态时调⽤次

listTranslationtranslations;//状态迁移列表

};

//状态迁移

classTranslation

{

public

virtual~Translation(){}

virtualboolisValid()=0;//⽤于判定迁移,可切换返回true

virtualState*getNextState()=0;//进⼊下个状态

virtualvoidonTransition(){}//迁移时调⽤

};

State是每个状态都会继承的基类,translations中存着他指向其他状态的Translation,通过每帧遍历所有Translation的isValid()来判定是

否可以跳转,若可以跳转则执⾏⾃⾝的OnStateExit(),并将当前的状态设置为getNextState()获得的状态

然后还有状态机类,⽤来管理所有状态:

//状态机类

classFiniteStateMachine

{

public

voidUpdate();//每帧运⾏次

State*initialState;//初始状态

State*activeState;//正在运⾏的状态

protected

listStatestates;//所有状态的实例

};

voidFiniteStateMachineUpdate()

{

//遍历活动状态的所有迁移,若有可⽤的,则切换状态

listTranslationiteratoritr=activeState-translations.begin();

for(inti=0;iactiveState-translations.size();++i,++itr)

{

if(itr-isValid())

{

activeState-OnStateExit();//退出调⽤

activeState=itr-getNextState();//切换活动状态

itr-onTransition();

文档评论(0)

祝星 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档