- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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();
您可能关注的文档
- TU1810紫外分光光度计作业指导书.doc
- 教师政策法规 (2).doc
- Agilent7890A(TCD)操作规程汇总.docx
- 中汇会计师事务所怎么样.docx
- 高中边城读后感作文(精选5篇).doc
- 军队条令条例试题.doc
- 人教部编版语文八上《唐诗五首》之《钱塘湖春行》PPT课件.ppt
- 蓝牙音箱的焊接实习报告.docx
- 药理学PPT课件-糖尿病用药-胰岛素及口服降血糖药.ppt
- 大学生的人际交往.doc
- 六盘水市钟山区2025届三上数学期末达标检测试题含解析.doc
- 龙岩市重点中学2024-2025学年初三下学期初联考语文试题含解析.doc
- 龙岩市新罗区2025届三年级数学第一学期期末调研试题含解析.doc
- 隆化县2024年数学六上期末学业水平测试模拟试题含解析.doc
- 陇南地区成县2025届数学六上期末预测试题含解析.doc
- 罗城仫佬族自治县2024-2025学年数学三上期末质量跟踪监视模拟试题含解析.doc
- 罗田县2024-2025学年三年级数学第一学期期末检测试题含解析.doc
- 娄底市娄星区2024-2025学年数学三年级第一学期期末复习检测模拟试题含解析.doc
- 六安市裕安区2024年数学三上期末综合测试试题含解析.doc
- 龙里县2024年数学六年级第一学期期末检测试题含解析.doc
最近下载
- 马工程《人力资源管理》章节知识点-核心要点.doc
- 金相检验-变形铝合金的相鉴别.pptx VIP
- NB_T 47015-2023 压力容器焊接规程.pdf
- 统编版(2024新版)一年级上册道德与法治第一、二单元1-8课 共8课时教学设计.docx
- 数据资产管理平台用户使用手册说明书.pdf VIP
- 林业有害生物发生及成灾标准-森林病虫害防治.doc VIP
- 22J403-1楼梯栏杆栏板.pptx VIP
- 2023年中国电信解决方案支撑经理认证考试题库大全-上(单选题汇总).pdf VIP
- NB∕T 10179-2019 -煤矿在用高压开关设备电气试验规范.pdf
- 培训课件-糖尿病肾病腹膜透析.ppt
文档评论(0)