# 2DGame **Repository Path**: ABigSun/2DGame ## Basic Information - **Project Name**: 2DGame - **Description**: 二维游戏引擎基础 - **Primary Language**: C++ - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-05-16 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 2DGame ## 开发环境 * Git * Python 2.x * Cocos2d-x 引擎 (3.x) * Visual Studio 2015 社区版 * Android平台下开发 * JDK * Apache Ant * Android SDK * Android NDK *Cocos2d-x 3.x引擎相关配置 * 引擎的配置 * 生成预编译环境 * 生成支持预编译的模板 *创建cocos项目 *`cocos new` *Cocos2d-x项目结构 * Classes -- 程序代码(c++) *AppDelegate * Resousres * proj.xxx ## Cocos2d-x引擎 * 导演Director * 访问和变更场景 * 访问Cocos2d-x的配置信息 * 暂停、继续、停止游戏控制 * 坐标系转换 * 场景Scene * 场景分类 * 展示类场景 * 选项类场景 * 游戏场景 * 场景与层的关系 * 一个场景Scene包含多个层layer * 场景的控制 * 运行:runWithScene * 切换场景(释放当前场景);replaceScene * 切换场景(当前场景入栈):pushScene * 返回场景:popScene * 返回根场景:popToRootScene * 场景过渡动画 * 场景的生命周期 * onEnter * onExit * 层layer * 初始化调用:init方法 --层对象产生时调用一次 * 进入层:onEnter * 退出层:onExit * 清除对象调用:cleanup * 节点Node * 主要操作 * 创建节点:create * 新增节点:addChild * 删除节点:removeChild / removeChildByTag / removeAllChildrenWithCleanup / removeFromParentAndCleanup * 查找节点:getchildByTag / getChildByName * 重要属性 * 位置 position * 锚点 anchorPoint 默认(0.5,0.5)即正中间 * 定时器Scheduler * void scheduleUpdate(vpod) `定时调用Update函数` * void schedule(SEL_SCHEDULE selecor,float) * void unscheduleXXXX 停止定时器 * 动作相关 * 执行动作 runAction * 停止动作 stopAction / stopActionByTag / stopAllActions * 坐标系 * UI坐标系(Android/iOS/Win的二维坐标系)`左上角` * OpenGL坐标系(世界坐标系/模型坐标系)`左下角` * 文字 * 字符串 std::string / cocos2d::string `中文下-乱码情况严重` * 标签 Label / LableAltas * 系统字体 createWithSystemFont * 指定字体 TTF字体 createWithTTF * 位图字体 图像 createWithBMFont * 数据结构 * 列表 * __Array 数字集合 * Vector 集合 * ValueVector * 字典 * __Dictionary 字典 * Map * ValueMap / ValueMapIntKey * 精灵(Sprite) * 创建对象相关方法 * create() -- 创建后设置纹理属性 * create(filename) -- 从指定资源(图片)创建精灵 * create(filename,rect) -- 从指定资源和指定区域创建精灵 * createWithTextture(textture) -- 从指定纹理创建精灵 * createWithTextture(textture,rect) -- 从指定纹理和区域创建精灵 * createWithSpriteFrame(spriteFrame) -- 从精灵帧创建精灵 * createWithSpriteFrameName(spriteFrameName) -- 从精灵帧缓存 * 性能优化 * 纹理缓存 TextureCache * 精灵帧缓存 SpriteFrameCache * 动画缓存 AnimationCache * 菜单Menu * 菜单项MenuItem * 文本菜单类 `MenuItemLable` * 精灵菜单类 `MenuItemSprite` * 开关菜单类 `MenuItemToggle` * 动作Action * 基本动作 * 瞬时动作 Place / Show / Hide/... * 间隔动作 (By偏移和To目标) Jump/Move/Rotate... * 动作组合 * 顺序序列Sequence * 并行序列Spawn * 重复序列Repeat * 无限重复序列RepeatForever * 反序方法reverse * 速度变化 * 函数调用 * 无参数函数调用:CallFunc * 带参函数调用:CallFuncN * 动作跟随 * 特效 网格动作(GridAction) * 动画 * 动画类 Animation * 动作类 Animate * 用户事件 * 接受并处理的事件 * 触摸事件 * 加速度事件 * 键盘事件 * 鼠标事件 * 自定义事件 * 事件处理机制 * 事件Event * 事件源Node * 事件处理者EventListener * 单点触摸事件处理 TouchOneByOne * 多点触摸事件处理 TouchAllAtonce * 键盘事件处理 keyboard * 鼠标事件处理 Mouse * 加速度事件处理 Accelreation * 游戏手柄事件处理 * 焦点事件处理 Focus * 自定义事件处理 Custom * 事件分发器EventDispatcher * 注册事件监听器 * 注销事件监听器 * 在层中直接进行事件处理 * setTouchXXX * setAccelermeterEnabled * 音频 * Cocos2d-x跨平台音频的支持情况(音乐与音效) * Audio引擎 -- SimpleAudioEngine * 处理背景音乐 * 处理音效 * 粒子系统 * 粒子发射模式:重力模式、半径模式 * 粒子系统的属性 * 内置粒子系统 Particlexxx::create(); * 自定义粒子系统 particleSystemQuad(支持代码与plist) ##基于cococs-2dx的二维游戏开发基础 * 创建项目 * 游戏主要元素 * Hero 发射子弹 * SmallEnemy * BigEnemy 发射子弹 * 背景 * 游戏操控:触摸控制 * 触摸控制 * 加速度计时控制 * 模拟摇杆 * 手势控制 * AI控制 * 分辨率的控制:多分辨率的支持(程序支持以及资源的支持) * 横屏 * 竖屏 * 发射子弹:持续动作,采用调度器完成 * 游戏背景 * (创建玩家和敌人(sprite)、设置位移、设置屏幕大小(AppDelegate中)、 * 创建子弹(sprite),设置发射和速度间隔、) * 背景音乐与音效 * 碰撞检测 * 矩形碰撞 * AABB碰撞 * 物理碰撞(BOX2D引擎) * 相互碰撞的规则(论文中可用二维表格形式表达) * 游戏Ui:从Layer开始 * 代码重构(分离:低耦合,高内聚) * Sprit精灵 * UI