首页 > 代码库 > 6_State 游戏开发中使用状态机
6_State 游戏开发中使用状态机
### State不好的代码```//处理玩家输入的代码void Heroine::handleInput(Input input){ if (input == PRESS_B) { if (!isJumping_ && !isDucking_) { // Jump... } } else if (input == PRESS_DOWN) { if (!isJumping_) { isDucking_ = true; setGraphics(IMAGE_DUCK); } else { isJumping_ = false; setGraphics(IMAGE_DIVE); } } else if (input == RELEASE_DOWN) { if (isDucking_) { // Stand... } }}```FSM```1 machine有几种状态2 同一时间machine只有一种状态3 一系列的输入和事件发送给machine4 状态切换``````class IState{ virtual void HandleInput() = 0;}class State1: IState { void HandleInput(){}}class Hero { IState state; void HandleInput(){ this.state.HandleInput(); }}// 可使用多个状态机在hero身上void Heroine::handleInput(Input input){ state_->handleInput(*this, input); equipment_->handleInput(*this, input);}```###状态机的目的是将某一种状态的所有处理封装到一个类里##缺点```复杂ai(状态机不适用)状态历史(use state stack 解决)```
6_State 游戏开发中使用状态机
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。