# 二维游戏引擎基础-23 **Repository Path**: husenyan/2d_23 ## Basic Information - **Project Name**: 二维游戏引擎基础-23 - **Description**: 《二维游戏引擎基础》课程案例 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-09-17 - **Last Updated**: 2021-06-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 二维游戏引擎基础-23 ## 开发环境 * Git * Python 2.x * Cocos2d-x 引擎(3.x) * Visual Studio 2015 社区版 * Android平台下开发 * JDK * Apache Ant * Android SDK * Android NDK * Cocos2d-x 3.x引擎相关配置 * 引擎的配置(python setup.py) * 生成预编译环境 * 生成支持预编译的模板 * 创建Cocos项目 * 'cocos new <项目名> -p <项目包名> -l cpp -t binary' * Cocos2d-x项目结构 * Classes --程代码(C++) * AppDelegate类 --Cocos的入口类 * Resources --游戏资源(图片、音频、字体等) * proj。xxx --对应平台的项目文件 ## Cocos2d-x引擎 * 导演(Director) *访问和变更场景 *访问Cocos2d-x的配置信息 *暂停、继续、停止游戏控制 *坐标系转换 * 场景(Scene) * 场景分类 * 展示类场景 * 选项类场景 * 游戏场景 * 场景与层的关系 * 一个场景(Scene)包括多个层(Layer) * 场景的控制 * 运行:runWithScene * 切换场景(释放当前场景):replaceScence * 切换场景(当前场景入栈):pushScene * 返回场景:popScene * 返回根场景:popToRootScene * 场景过渡动画 TransitionXXX * 场景的生命周期 * onEnter * onExit * 层(Layer) * 初始化的调用:init方法 --层对象产生时调用一次 * 进入层: onEnter * 退出层: onEnter * 清除对象调用:cleanup 方法 * 节点(Node) * 主要操作 * 创建节点:create * 新增节点:addChild * 删除节点:removeChild/removeChildBytag/remoceAllChildrenWithCleanup/removeFromParentCleanup * 查找节点:getChildByTag/getChildren/getChildname * 重要属性 * 位置 position * 锚点 anchorPoint 默认(0.5,0.5)即正中 * 定时器(Scheduler) * void scheduleUpdate(vpod)'定时调用update函数' * void schedule(SEL_SCHEDULE selecor,float) * void unscheduleXXX 停止定时器 * 动作相关 * 执行动作 runAction * 停止动作 stopAction/stopActionByTag/ stopAllActions * 坐标系 * UI坐标系(Android/iOS/Win的二维坐标系)‘左上角’ * OpenGL坐标系(世界坐标系/模型坐标系) ‘左下角’ * 文字 * 字符串 std::string/cocos2d::__String ‘中文乱码情况’ * 标签Label/LabelAltas * 系统字体 createWithSystemFont * 指定字体 TIF字体 createWithTTF * 位图字体 图像 createWithBMFont * 数据结构 * 列表 * __Array 数组集合 * Vector 集合 * ValueVector * 字典 * __Dictionary 字典 * Map * ValueMap / ValueMapIntKey * 精灵(Sprite) * 创建对象相关方法 * create --创建后设置纹理属性 * create(filename)--从指定资源(图片)创建精灵 * create(filename,rect)--从指定资源和指定区域创建精灵 * createWithTexture(texture)--从指定纹理创建精灵 * createWithTexture(texture,rect)--从指定纹理和指定区域创建精灵 * createWithSpriteFrame(spriteFrame)--从精灵帧创建精灵 * createWithSpriteFrameName(spriteFrameName)--从精灵帧缓存指定名称创建精灵 * 性能优化 * 纹理缓存(TextureCache) * 精灵帧缓存(SpriteFrameCache) * 动画缓存(AnimationCache) * 菜单(Menu) * 菜单项(MenuItem) * 文本菜单类‘MenuItemLabel’ * 精灵菜单类‘MenuItemSprite’ * 开关菜单类‘MenuItemToggle’ * 动作(Action) * 基本动作 * 瞬时动作 Place/Show/Hide/.... * 间隔动作(By偏移和To目标) Jump/Move/Rotate/Scale/Bezier/ * 动作组合 * 顺序序列(Sequence) * 并行序列(Spawn) * 重复序列(Repeat) * 无限重复序列(RepeatForever) * 反序方法 reverse * 速度变化 * 函数调用 * 无参函数调用: CallFunc * 带参函数调用: CallFuncN * 动作调用 * 动作跟随 * 特效 网络动作(GridAction) * 动画 * 动画类 Animation * 动作类 Animate * 用户事件 * 接收并处理的事件 * 触摸事件 * 加速度事件 * 键盘事件 * 鼠标事件 * 自定义事件 * 事件处理机制 * 事件 Event * 事件源 Node * 事件处理者 EventListener * 单点触摸事件处理 EventListenerTouchOneByOne * 多点触摸事件处理 EventListenerTouchAllAtonce * 键盘事件处理 EventListenerkeyboard * 鼠标事件处理 EventListenerMouse * 加速度事件处理 EventListenerAcceleration * 游戏手柄事件处理 EventListenerController * 焦点事件处理 EventListenerFocus * 自定义事件处理 EventListenerCustom * 事件分发器 EventDispatcher * 注册事件监听器 * addEventListenerWithSceneGraphPriority * addEventListenerWithFixedPriority * 注销事件监听器 * removeAllEventListeners * 在层中直接进行事件处理 * setTouchXXX * setAccelermeterEnable * 音频 * Cocos2d-x跨平台音频的支持情况(音乐与音效) * Audio引擎 --SimpleAudioEngine * 处理背景音乐 xxxBcakgroundMusic * 处理音效 xxxEffect / xxxEffects * 粒子系统 * 粒子发射模式:重力模式、半径模式 * 粒子系统的属性 * 内置粒子系统 Particlexxx::create() * 自定义粒子系统 ParticleSystemQuad (支持代码与plist) ## 基于Cocos2d-x的二维游戏开发基础 * 创建项目 >cocos new Plane -p com.mysize.mygame -l cpp -t binary * 游戏元素 * Hero 发射子弹 * SmallEnemy * BigEnemy 发射子弹 * 背景 * 游戏操控:触摸控制 * 触摸控制 * 加速度计控制 * 模拟摇杆 * 手势控制 * AI控制 * 分辨率的控制:多分辨率的支持(程序支持以及资源的支持) * 横屏 * 竖屏 * 发射子弹:持续的动作,采用调度器完成 * 游戏背景(不变的游戏背景,2个相同对象完成移动) * 音乐与音效 * 碰撞检测 * 矩形碰撞 * AABB碰撞 * 物理碰撞(Box2D引擎) * 相互碰撞的规则(表格形式表达) * 游戏UI:从Layer开始 * 代码重构(分离:低耦合、高内聚) * Sprite * UI