# 二维游戏引擎基础 **Repository Path**: CHENQSO/2d_game ## Basic Information - **Project Name**: 二维游戏引擎基础 - **Description**: 《二维游戏引擎基础》课程案例 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-09-23 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 二维游戏引擎基础 陈啟菘 20170203073 (21) 《二维游戏引擎基础》课程案例 ## 开发环境 * Git * Python 2.7.16 * Cocos2d-x 引擎(3.17.2) * Visual Studio 2017 社区版 * Android平台下开发 * JDK * Apache Ant * Android SDK * Android NDK * Cocos2d-x 3.17.2引擎相关配置 * 引擎的配置(python setup.py) * 生成预编译环境 * 生成支持预编译的模块 * 创建Cocos项目 * cocos new <项目名> -p <项目包名> -l cpp -t binary * Cocos2d-x项目结构 * Class --程序代码(C++) * AppDelegate类 --Cocos的入口类 * Resousres --游戏资源(图片、音频、字体等) * proj.xxx --对应平台的项目文件 ## Cocos2d-x引擎 * 导演(Director) * 访问和变更场景 * 访问Cocos2d-x的配置信息 * 暂停、继续、停止游戏控制 * 坐标系转换 * 场景(Scene) * 场景分类 * 展示类场景 * 选项类场景 * 游戏场景 * 场景与层的关系 * 一个场景(Scene)包含多个层(Layer) * 场景的控制 * 运行:runWithScene * 切换场景(释放当前场景):replaceScence * 切换场景 (当前场景入栈):pushScence * 返回场景:popScene * 返回根场景:popToRootScene * 场景过渡动画 TransitionXXX * 场景的生命周期 * oneEnter * onExit * 层(Layer) * 初始化调用:init方法 --层对象产生时调用一次 * 进入层: onEnter * 退出层: onExit * 清除对象调用:cleanup 方法 * 节点(Node) * 主要操作 * 创建节点:creat * 新增节点:addChild * 删除节点:removeChild/removeChildByTag/removeAllAChildWithCleanup/removeFromParentAndCleanup * 查找节点:getChildByTay/getChildByName/getChildren * 属性 * 位置 position *锚点 anchorPoint 默认(0.5,0.5)即正中 * 定时器(Scheduler) * void scheduleUpdata(vpod) 定时调用updata函数 * void schedule(SEL_SCHEDULE selecor,float) * void unscheduleXXX 停止定时器 * 动作相关 * 执行动作 runAction * 停止动作 stopAction/StoopActioByTag/stopAllActions *坐标系 *UI坐标系(Android /iOS/Win的二维坐标系) `左上角` *OpenGL坐标系(世界坐标系/模型坐标系) `左下角` *文字 *字符串 std::string/cocos2d::_String `中文乱码情况` *标签 Label/LabelAltas *系统字体 createWithSystemFont *指定字体 TTF字体 createWithTTF *位图字体 图像 creatWithBMFont *数据结构 *列表 *__Array 数组集合 *Vector 集合 *ValueVector *字典 *__Dictionary 字典 *Map *ValueMap / ValueMapIntKey *精灵(Sprite) *创建对象相关方法 *creat --创建后设置文理属性 *creat(filename) --从指定资源(图片)创建精灵 *creat(filename,rect) --从指定资源和指定区域创建精灵 *creatWithTexture(texture) --从指定纹理创建精灵 *creatWithTexture(texture,rect) --从指定纹理和区域创建精灵 *creatWithSpriteFrame(spriteFrame) --从精灵帧创建精灵 *creatWithSpriteFrameName(spriteFrameName) --从精灵帧缓存指定名称创建精灵 *性能优化 *纹理缓存(TextureCache) *精灵帧缓存(SpriteFrameCache) *动画缓存(AnimationCache) *菜单(Menu) *菜单项(MenuItem) *文本菜单类 `MemnuItemLabel` *精灵菜单类 `MemnuItemSprite` *开关菜单类 `MemnuItemToggle` *动作(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 *注册事件监听器 *addEventListenerWithSceneGrap *addEventListenerWithFixedPriority *注销事件监听器 *removeAllEventListeners *在层中直接进行事件处理 *setTouchXXX *serAccelermeterEnabled *音频 *Cocos2d-x跨平台音频的支持情况(音乐与音效) *Audio引擎--SimpleAudioEngine *处理背景音乐 xxxBackgroundMusic *处理音效 xxxEffect/xxxEffects *粒子系统 *粒子发射模式:中立模式、半径模式 *粒子系统的属性 *内置粒子系统 ParticleXXXc::create() *自定义粒子系统 ParticleSystemQuad (支持代码与plist) ##基于Cocos2d-x的二维游戏开发基础 *创建项目 >cocos new Plane -p com.mysite.mygame -l cpp -d. *游戏主要元素 *Hero 发射子弹 *SmallEnemy *BigEnemy 发射子弹 *背景 *游戏操控:触摸控制 *触摸控制 *加速度计控制 *模拟控制 *手势控制 *AI控制 *分辨率的控制:多分辨率的支持(程序支持以及资源的支持) *横屏 *竖屏 *发射子弹:持续的动作,采用调度器完成 *游戏背景(不变的游戏背景,2个相同对象完成) *背景音乐与音效 *碰撞检测 *矩形碰撞 *AABB碰撞 *物理碰撞(Box2D引擎) *相互碰撞的规则(表格形式表达) *游戏UI:从Layer开始 *代码重构(分离:低耦合、高内聚) *Sprite *UI