游戏结构 -- 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; // 休闲时间的毫秒数