游戏结构 -- from Space Viking & Learning Cocos2d

An Architecture in Cocos2d

Classes

GameplayLayer、BackgroundLayer、GameObject、GameCharacter、RadarDish、Viking

GameplayLayer : CCLayer 游戏Layer

CCSprite *vikingSprite; // 游戏主角
SneakyJoystick *leftJoystick; // 屏幕左侧游戏控制杆
SneakyButton *jumpButton; // 跳跃按钮
SneakyButton *attackButton; // 攻击按钮
CCSpriteBatchNode *sceneSpriteBatchNode; // 包含所有GameObject的CCSpriteBatchNode

BackgroundLayer : CCLayer 背景Layer

 

GameObject : CCSprite 游戏物体

BOOL isActive; // 是否活跃
BOOL reactsToScreenBoundaries; // 是否对平面边界做出反应
CGSize screenSize; // 屏幕大小
GameObjectType gameObjectType; // 物体类型
-(void)changeState:(CharacterStates)newState; // 转变状态
-(void)updateStateWithDeltaTime:(ccTime)deltaTime andListOfGameObjects:(CCArray*)listOfGameObjects; // 每帧更新一次状态
-(CGRect)adjustedBoundingBox; // 调整后的包围盒
-(CCAnimation*)loadPlistForAnimationWithName:(NSString*)animationName andClassName:(NSString*)className; // 通过plist文件获得动画基本信息

GameCharacter : GameObject 游戏角色

int characterHealth; // 健康值
CharacterStates characterState; // 角色状态
-(void)checkAndClampSpritePosition; // 检查并调整角色位置
-(int)getWeaponDamage; //获得该角色提供的伤害值

RadarDish : GameCharacter 雷达

// animations
CCAnimation *...; // 各种动画
GameCharacter *vikingCharacter; // 主角

Viking : GameCharacter

LastPunchType myLastPunch; // 上次攻击时使用的手
BOOL isCarryingMallet; // 是否有木棍
CCSpriteFrame *standingFrame; // viking站着时的frame
// animations
CCAnimation *...; // 各种动画
SneakyJoystick *joystick; // 游戏杆
SneakyButton *jumpButton; // 跳跃按钮
SneakyButton *attackButton; // 攻击按钮
float millisecondsStayingIdle; // 休闲时间的毫秒数

posted on 2013-01-03 19:30  紫澜  阅读(261)  评论(0编辑  收藏  举报