人物状态机
2016-06-06 12:09:41 0 举报
人物状态机是一种用于描述角色行为和状态变化的模型。它由一组状态、事件和转换规则组成,能够根据不同的输入和条件自动切换角色的状态。在游戏开发中,人物状态机被广泛应用于控制角色的移动、攻击、防御、休息等行为。通过合理设计状态机,可以实现更加自然、流畅的角色表现,提高游戏的可玩性和用户体验。同时,状态机也可以用于其他领域,如机器人控制、智能家居等。总之,人物状态机是一种非常实用的工具,能够帮助开发者更好地管理和控制角色的行为和状态。
作者其他创作
大纲/内容
《抽象类》RoleStateAbstract 角色状态抽象基类
+RoleFSMMgr CurrRoleFSMMgr{get;private set;}
+RoleStateAbstract(RoleFSMMgr roleFSMMgr){CurrRoleFSMMgr=roleFSMMgr;}进入状态+virtual void OnEnter(){};执行状态+virtual void OnUpdate(){};退出状态+virtual void OnLeave(){};
RoleStateDie
+RoleStateAttack(RoleFSMMgr roleFSSMMgr):base(roleFSMMgr){}+override void OnEnter(){base.OnEnter();}+override void OnUpdate(){base.OnUpdate;}+override void OnLeave(){base.OnLeave();}
RoleMonsterAI 怪物AI
+void DoAI();
RoleStateRun
meijulei
RoleStateIdle
RoleCtrl角色控制
+RoleType currRoleType=RoleType.None;当前角色类型枚举+RoleInfoBase currRoleInfo=null;当前角色信息+IRoleAI currRoleAI=null;当前角色AI+RoleFSMMgr currRoleFSMMgr=null;当前角色有限状态管理器
+void Init();初始化
RoleInfoMainPlayer玩家在主城信息
RoleMainPlayerCityAI 角色主城AI
RoleInfoBase 角色基类信息
+int RoleSeverID;角色服务器ID(仅有的ID)+int RoleID;(一种怪物共有的ID)+string NIckName;+int MaxHP;+int CurrHP;
RoleStateAttack
角色枚举
IRoleAI 角色AI接口
_DoAI();执行AI
RoleStateHurt
无=0;玩家=1;怪物=2
RoleInfoMonster 怪物信息
RoleFSMMgr 有限状态机
+RoleFSMMgr(RoleCtrl currRoleCtrl){CurrRoleCtrl=currRoleCtrl;m_RoleStateDic=new Dictionary();m_RoleStateDic[RoleState.Idle]=new RoleStateIdle(this);}+void OnUpdate(){if(m_CurrRoleState!=null)毎帧都执行{m_CurrRoleState.OnUpdate();}}改变状态+void ChangeState(RoleState newState){if(CurrRoleStateEnum==newState)}return;
0 条评论
下一页