继续前面的总结,下面总结一下具体的细节
3、人物的状态机
在这个游戏中有五种状态:空闲、行走、出拳、受伤和死亡。为了有一个完整的状态流,每个状态应该有一个必要条件和结果。例如:行走状态不能突然转到死亡状态,因为你的英雄在死亡前必须先受伤。
定义五种动作方法:
void idle(); //-----空闲
void attack(); //-----攻击
void hurtWithDamage(float damage); //------受伤
virtual void knockout(); //------死亡 这里是一个虚函数其继承类中会用的到,在继承类中用ActionSprite::knockout() 来调用基类的方法
void walkWithDirection(CCPoint direction); //------行走
void attack(); //-----攻击
void hurtWithDamage(float damage); //------受伤
virtual void knockout(); //------死亡 这里是一个虚函数其继承类中会用的到,在继承类中用ActionSprite::knockout() 来调用基类的方法
void walkWithDirection(CCPoint direction); //------行走
五种执行动作:
//actions
CC_SYNTHESIZE_RETAIN(cocos2d::CCAction*, _idleAction, IdleAction);
CC_SYNTHESIZE_RETAIN(cocos2d::CCAction*, _attackAction, AttackAction);
CC_SYNTHESIZE_RETAIN(cocos2d::CCAction*, _walkAction, WalkAction);
CC_SYNTHESIZE_RETAIN(cocos2d::CCAction*, _hurtAction, HurtAction);
CC_SYNTHESIZE_RETAIN(cocos2d::CCAction*, _knockedOutAction, KnockedOutAction);
CC_SYNTHESIZE_RETAIN(cocos2d::CCAction*, _idleAction, IdleAction);
CC_SYNTHESIZE_RETAIN(cocos2d::CCAction*, _attackAction, AttackAction);
CC_SYNTHESIZE_RETAIN(cocos2d::CCAction*, _walkAction, WalkAction);
CC_SYNTHESIZE_RETAIN(cocos2d::CCAction*, _hurtAction, HurtAction);
CC_SYNTHESIZE_RETAIN(cocos2d::CCAction*, _knockedOutAction, KnockedOutAction);