cocos2d-x学习之格斗游戏总结(2)

继续前面的总结,下面总结一下具体的细节
3、人物的状态机
在这个游戏中有五种状态:空闲、行走、出拳、受伤和死亡。为了有一个完整的状态流,每个状态应该有一个必要条件和结果。例如:行走状态不能突然转到死亡状态,因为你的英雄在死亡前必须先受伤。
定义五种动作方法:
 void idle();                                                  //-----空闲
 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);

在Hero类和Robot类中分别实现了自己的Action(动画的执行)以及各自的特性

4、HudLayer层中的SimpleDPad类就好比android中的GroupView的子控件,并且我们为SimpleDPad增加协议(这个协议好比是android中的监听事件Listener)

看下代码:

 

红色方框中的就是cocos2d-x中的协议,继承它,并且实现它的三个方法:

virtual bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
virtual void ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
virtual void ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
注意上面还有一个类就是圆圈中的SimpleDPadDelegate,在SimpleDPad类中有SimpleDPadDelegate的指针,所以就可以在以上三个方法中操控SimpleDPadDelegate的方法了。而GameLayer继承了SimpleDPadDelegate,所以在GameLayer中重写了SimpleDPadDelegate的所有virtual方法,这样GameLayer和SimpleDPad就有关联了。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值