转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。
资源为网上寻找的,仅研究学习用,若是侵犯版权请通知本人整改。
上一篇:Cocos3.4 横版游戏制作-《KillBear》-添加地图
在这一篇中,我们实现生成一个基础的Role类,Hero继承Role类创建.(我们敌人Enemy也会继承这个类)
最后把它放在我们的GameLayer中
开发环境
- win64 : vs2010
- Cocos2d-x v3.4Final
- TexturePackerGUI
- MapEdit
代码构建
角色Role
基础类Role
这是基础类,所有的角色都继承他.
受限篇幅,下面代码贴出一部分看注释吧
- .h
typedef struct _BoundingBox
{
Rect actual;
Rect original;
}BoundingBox;
typedef enum {
ACTION_STATE_NONE = 0,
ACTION_STATE_IDLE,
ACTION_STATE_WALK,
...
ACTION_STATE_DEAD
}ActionState;
//基础角色类,主角和NPC都需要继承它
//单纯的控制播放动画,何时播放它在具体的类里面设置
class Role :public Sprite
{
public:
Role(void);
~Role(void);
/* 角色状态设定,初始化角色状态等 */
CC_SYNTHESIZE(std::string,Name,Name); //角色名称
CC_SYNTHESIZE(float,curtLifevalue,CurtLifeValue); //角色当前生命值
...
/* 需要用creatNomalAnimation创建,只有普通动画,有受伤判定,无攻击判定 */
CC_SYNTHESIZE_RETAIN(Action*, m_pidleaction, IdleAction); //角色空闲时序列
CC_SYNTHESIZE_RETAIN(Action*, m_pwalkaction, WalkAction); //角色移动时动画帧序列
...
void Role::callBackAction(Node* pSender); //动画执行完毕的通用回调处理
/* 下面是所有的动画回调函数,用来执行此动画, */
virtual void runIdleAction(); //执行闲置动画
virtual void runWalkAction(); //执行移动行走动画
...
BoundingBox createBoundingBox(Vec2 origin,Size size);
CC_SYNTHESIZE(BoundingBox, m_bodyBox, BodyBox); //身体碰撞盒子
CC_SYNTHESIZE(BoundingBox, m_hitBox, HitBox);

最低0.47元/天 解锁文章
1369

被折叠的 条评论
为什么被折叠?



