《保卫萝卜》06:重构让角色鲜活起来一、前提:完成前一篇的内容。具体参考:《保卫萝卜》05:对游戏原型进行屏幕适配完善二、本篇目标:说说游戏中各种角色的动作、属性以及重构思路;进行代码重构让色狼大叔和女主角生动鲜活起来;三、内容:说说游戏中各种角色的动作、属性以及重构思路通过前两篇我们建立的一个简陋的游戏原型,但是游戏中的人物比如色狼大叔、女主角都看去来很呆板不够鲜活,比如色狼会沿着道路移动,那这个只能说是移动根本不像是在走路,没有走的动作感觉就是沿着道路在漂移,女主角也是一动不动的站那里。这样的游戏很没有乐趣,所以需要给这些游戏角色加入动作和表情,让人看去来他们是鲜活的,对这些角色进行一下简单的动画以及属性分析如下:色狼大叔的动画:1、静止动画:游戏刚开始处于静止状态2、走路动画:沿着道路走3、死亡动画:当子弹击中血量消耗完时死亡消失色狼大叔的属性:1、是否运动:色狼是否处于激活沿着道路行走2、是否死亡:是否被炮塔打死3、行走速度:不同色狼的行走速度不同4、色狼血量:不同色狼血量不同5、行走:沿着道路行走女主角的动画:1、静止动画:游戏刚开始处于静止状态2、卖萌动画:不能像木头似的,就加点表情动作3、死亡动画:当纯洁值被色狼玷污光了就死亡了女主角的属性:1、女主角贞洁值:相当于生命值根据上面的分析我们把每个角色拆分成动画显示和业务属性逻辑两个部分,对色狼和女主角进行代码重构。重构后大概结构如上图:ActionSprite:Sprite类,负责游戏角色精灵的动画显示,Luoli(萝莉)、DaShu(大叔)、JiaoShou(叫兽)等角色精灵均继承自ActionSprite,都属于动画显示类。Luoli(萝莉):属ActionSprite的子类,负责女主角的动画效果展示。DaShu(大叔):属ActionSprite的子类,负责大叔色狼的动画效果展示。JiaoShou(叫兽):属ActionSprite的子类,负责叫兽色狼的动画效果展示。Selang(色狼):ode类,负责色狼的行走、血量、速度、攻击等具体的业务,每个Selang都包含一个DaShu(大叔)或JiaoShou(叫兽)类的游戏精灵。并且具备最重要的行为实现沿着道路行走。Girl(女孩):ode类,负责女主角的血量等具体的业务,每个Girl都包含一个Luoli类的游戏精灵。进行代码重构让色狼大叔和女主角生动鲜活起来打开项目工程按照上面的思路重点对色狼和女主角的代码实现进行重构。色狼大叔代码重构第一步:、(角色动画类),Sprite负责游戏角色的动画效果显示,色狼和女孩都会是这个类的子类。:1234567891011121314151617181920//声明一个动作状态的枚举类型typedef enum _ActionState{ kActionStateNone = 0, //无状态 kActionStateIdle, //静止状态 kActionStateWalk, //行走状态 kActionStateDeath //死亡状态}ActionState;class ActionSprite: public cocos2d::CCSprite{public: ActionSprite(void); ~ActionSprite(void); //静止 void idle(); //死亡 void death(); //行走 void walk(); //价格 CC_SYNTHESIZE(int,_price,Price);2122232425262728293031323334353637383940 //生命值 CC_SYNTHESIZE(float,_hp,HP); //静止状态动作 CC_SYNTHESIZE_RETAIN(cocos2d::Action*,_idleAction,IdleAction); //死亡状态动作 CC_SYNTHESIZE_RETAIN(cocos2d::Action*,_deathAction,DeathAction); //行走状态动作 CC_SYNTHESIZE_RETAIN(cocos2d::Action*,_walkAction,WalkAction); //当前动作状态 CC_SYNTHESIZE(ActionState,_actionState,ActionState); //行走速度 CC_SYNTHESIZE(float,_walkSpeed,WalkSpeed);
cocos引擎—《保卫萝卜》06:重构让角色鲜活起来 来自淘豆网m.daumloan.com转载请标明出处.