编辑推荐
《Cocos2d-X 3.0游戏开发实战详解》全面讲解了最新的Cocos2d-x 3.0的新功能、新应用。
涵盖了当下流行的多种游戏开发技术:
粒子系统、TMX瓦片地图、传感器体感操控、多点触控、多线程、网络连接、Box2D物理引擎、LiquidFun流体引擎、Lua脚本、CocoStudio。
Android与iOS两大平台的实战案例:
射击类游戏—让子弹飞、休闲类游戏—泡泡龙。
内容覆盖了从学习Cocos2d-x必知必会的基础知识到基于Cocos2d-x引擎实现各种高级特效
详细介绍了如何结合Box2D物理引擎进行游戏开发
内容简介
随着智能手机的普及,一些可玩性强的手机游戏应用也逐渐普及开来。《Cocos2d-X 3.0游戏开发实战详解》结合作者多年从事游戏应用开发的经验,全面介绍了与Cocos2d-x引擎相关的必知必会的基础知识及完整的游戏案例。内容安排上由浅入深、循序渐进,起点低、终点高,既适合初学者学习,也适合有一定基础的读者进一步提升之用。另外,由于Cocos2d-x引擎通用于各种移动嵌入式平台,因此,书中除了提供在Android平台下开发的案例之外,还提供了在iOS平台下开发的案例。
《Cocos2d-X 3.0游戏开发实战详解》共分为12章,其中第1~6章主要介绍了使用Cocos2d-x引擎进行游戏开发时必知必会的基础知识,包括各种特效、粒子系统、TMX瓦片地图、声音、操控、网络连接等;第7章详细介绍了Box2D物理引擎的使用,同时还介绍了扩展自Box2D,用于流体开发的LiquidFun物理引擎;第8~10章介绍了Cocos2d-x引擎的一些高级知识,主要包括高级扩展控件、Lua协同开发、CocoStudio等;最后的两章分别给出了Android与iOS平台下的两大完整游戏案例。
同时为了便于读者的学习,《Cocos2d-X 3.0游戏开发实战详解》附赠的光盘中包含了书中所有案例的完整代码,最大限度地帮助读者快速掌握相应的开发技术。《Cocos2d-X 3.0游戏开发实战详解》适合Android/iOS程序员、游戏开发者及爱好者学习,也可以作为相关培训学校和大专院校相关专业的教学用书。
作者简介
吴亚峰,毕业于北京邮电大学,后留学澳大利亚卧龙岗大学取得硕士学位。1998年开始从事Java应用的开发,有10多年的Java开发与培训经验。主要的研究方向为OpenGL ES、手机游戏、Java EE以及搜索引擎。同时为手机游戏、Java EE独立软件开发工程师,并兼任百纳科技Java培训中心首席培训师。近十年来为数十家著名企业培养了上千名高级软件开发人员,曾编写过《Cocos2d-X案例开发大全》、《Cocos2d-X 3.0游戏开发实战详解》、《Unity 4 3D开发实战详解》、《OpenGL ES 2.0游戏开发(上下卷)》、《Android 3D游戏开发技术宝典——OpenGL ES 2.0》、《Android游戏开发大全》等多本畅销技术书籍。2008年初开始关注Android平台下的3D应用开发,并开发出一系列优秀的Android应用程序与3D游戏。
内页插图
目录
第1章初识庐山真面目--Cocos2d-x1.1Cocos2d-x概述1.1.1Cocos2d-x的前世今生1.1.2初见Cocos2d-x1.1.3Cocos2d-x市场前景1.2AndroidSDK的下载及配置1.2.1AndroidSDK的下载1.2.2AndroidSDK的配置1.3Cygwin的下载及安装1.3.1Cygwin的下载1.3.2Cygwin的安装1.4AndroidNDK的下载及配置1.5Cocos2d-x的下载及配置1.6Android项目的导入与创建1.6.1简单案例HelloCocos2dX的导入与运行1.6.2Cocos2d案例导入后的相关修改1.6.3创建自己的Android项目1.6.4项目结构的介绍1.7iOS项目的创建及开发1.7.1iOS项目的创建1.7.2iOS项目的开发1.8本章小结
第2章千里之行,始于足下--Cocos2d-x基础2.1Cocos2d-x中的一些基本概念2.1.1几个重要的基本概念2.1.2导演类--Director2.1.3节点类--Node2.1.4两个辅助类Point和Size2.1.5场景类--Scene2.1.6布景类--Layer2.2精灵类--Sprite2.2.1精灵类的基础知识2.2.2精灵类简单案例的开发2.3海量精灵的性能问题2.3.1一个创建海量精灵的案例2.3.2SpriteBatchNode类的基础知识2.3.3用SpriteBatchNode类创建海量精灵的案例2.4Cocos2d-x中的基本控件2.4.1基础知识2.4.2一个简单的案例2.5基本动作类2.5.1基础知识2.5.2移动相关动作2.5.3自身变换相关动作2.5.4颜色变化相关动作2.5.5瞬时动作2.5.6组合动作2.6换帧精灵2.6.1相关类的基础知识2.6.2一个简单的案例2.6.3精灵帧缓冲相关类基础知识2.6.4简单案例的帧缓冲版2.7资源图片的异步加载2.7.1基础知识2.7.2一个简单案例的开发2.8简单的骨骼动画2.8.1基本原理2.8.2一个简单的案例2.9Scale9精灵2.9.1Scale9精灵基础知识2.9.2一个简单的案例2.10本章小结
第3章让你的游戏更有吸引力--动作特效与场景切换特效3.1动作特效的使用3.1.13D振动特效3.1.23D瓦片振动特效3.1.33D瓦片碎裂特效3.1.4爆炸特效3.1.5瓦片消失特效3.1.63D瓦片跳跃特效3.1.7切开行特效3.1.8切开列特效3.1.93D翻页特效3.1.103D波浪特效3.1.113D瓦片波浪特效3.1.123D鱼眼特效3.1.133D水波涟漪特效3.1.14流体特效3.1.15顶右淡出特效3.1.16底左淡出特效3.1.17向上淡出特效3.1.18向下淡出特效3.1.193D绕x轴旋转特效3.1.203D绕y轴旋转特效3.1.21可扭曲波浪特效3.1.22旋转扭曲特效3.2百分比动作特效3.2.1百分比动作的基础知识3.2.2ProgressTimer类的基础知识3.2.3半径模式特效3.2.4水平模式特效3.2.5垂直模式特效3.3场景切换特效的使用3.3.1场景切换特效概览3.3.2跳跃切换特效3.3.3逆时针和顺时针切换特效3.3.4水平和垂直切换特效3.3.5从内向外和从外向内切换特效3.3.6淡出和可变色淡出切换特效3.3.7翻页切换特效3.3.8方向淡化切换特效3.3.9瓦片消失切换特效3.3.10列分割和行分割切换特效3.3.11绕定轴翻转切换特效3.3.12可缩放绕指定轴翻转切换特效3.3.13缩放和旋转切换特效3.3.14下一场景移动覆盖原场景切换特效3.3.15下一场景滑至出现切换特效3.3.16场景切换特效综合案例3.4本章小结
第4章更逼真的视觉效果--粒子系统4.1内置粒子系统的使用4.1.1内置粒子系统概览4.1.2炙热的太阳效果4.1.3焰火效果4.1.4火焰效果4.1.5星系效果4.1.6绽放效果4.1.7流星效果4.1.8螺旋效果4.1.9爆炸效果4.1.10烟雾效果4.1.11下雪效果4.1.12下雨效果4.2加载plist粒子系统4.2.1粒子设计器的使用4.2.2粒子系统的位置类型4.2.3加载plist文件4.3本章小结
第5章必知必会的开发技术--杂项5.12D图元的绘制5.2触控及多点触控5.2.1基础知识5.2.2单点触控的案例5.2.3多点触控的案例5.3百纳游戏摇杆5.3.1基本知识5.3.2一个简单的案例5.4重力传感器的使用5.5键盘事件的处理5.6用户数据的存储5.7声音的播放5.8在Cocos2d-x中使用多线程5.9文件输入/输出5.10网络功能的开发5.10.1连接HTTP网络服务器5.10.2连接WebSocket服务器5.11多分辨率屏幕的自适应5.11.1非等比例缩放5.11.2等比例缩放并裁剪5.11.3等比例缩放并留白5.11.4Cocos2d-x中的实现5.12本章小结
第6章绚丽的地图设计--TMX瓦片地图6.1正方形瓦片地图6.1.1应用正方形瓦片地图的实例6.1.2正方形地图的基本原理6.1.3正方形地图的特点6.1.4正方形地图的实现原理6.1.5正方形瓦片地图设计器6.1.6TMX瓦片地图的相关类6.2正方形瓦片地图案例6.2.1正方形地图案例概览6.2.2程序的总管AppDelegate类的开发6.2.3场景管理类TilesMapSimpleSceneManager的开发6.2.4布景层类TilesMapSimpleLayer的开发6.2.5英雄精灵动画的开发6.2.6控制英雄移动工具类DirectionUtil的开发6.2.7案例控制层类ControlLayer基本框架的搭建6.2.8案例控制层类ControlLayer中各控制方法的开发6.3正六边形瓦片地图6.3.1正六边形地图的原理及特点6.3.2正六边形地图的设计6.3.3正六边形地图的导入案例6.4正六边形地图的路径搜索6.4.1路径搜索示例基本框架的搭建6.4.2深度优先路径搜索算法DFS6.4.3深度优先路径搜索算法DFS的实现6.4.4广度优先路径搜索算法BFS6.4.5广度优先路径搜索算法BFS的实现6.4.6Dijkstra路径搜索算法6.4.7Dijkstra路径搜索算法的实现6.4.8用A*思想优化广度优先路径搜索6.4.9用A*思想优化Dijkstra路径搜索6.5本章小结
第7章游戏开发的核心--Box2D物理引擎7.1物理引擎很重要7.1.1什么是物理引擎7.1.2常见的物理引擎7.22D的王者Box2D7.2.1基本的物理学概念7.2.2Box2D中常用类的介绍7.3木块金字塔被撞击案例7.3.1案例运行效果7.3.2案例的基本框架结构7.3.3常量头文件--Constant头文件7.3.4物体类--PhyObject类7.3.5圆形物体类--CirclePhyObject类7.3.6矩形物体类--RectPhyObject类7.3.7多边形物体类--PolygonObject类7.3.8场景类--Box2DSceneManager类7.3.9布景类--Box2DLayer类7.4简易打砖块案例7.4.1案例运行效果7.4.2需要了解的结构体与类7.4.3碰撞监听器--MyContactListener类7.4.4布景类--Box2DLayer类7.5物体碰撞下落案例7.5.1案例运行效果7.5.2碰撞过滤器--b2ContactFilter类7.5.3碰撞过滤相关类的开发7.5.4布景类--Box2DLayer类7.6关节--Joint7.6.1关节定义--b2JointDef结构体7.6.2距离关节描述--b2DistanceJointDef结构体7.6.3距离关节案例--小球下摆7.6.4旋转关节描述--b2RevoluteJointDef结构体7.6.5旋转关节案例--转动的风扇与跷跷板7.6.6鼠标关节描述--b2MouseJointDef结构体7.6.7鼠标关节案例--物体下落7.6.8移动关节描述--b2PrismaticJointDef结构体7.6.9移动关节案例--定向移动的木块7.6.10齿轮关节描述--b2GearJointDef结构体7.6.11齿轮关节案例--转动的齿轮7.6.12焊接关节描述--b2WeldJointDef结构体7.6.13焊接关节案例--有弹性的木板7.6.14滑轮关节描述--b2PulleyJointDef结构体7.6.15滑轮关节案例--移动的木块7.6.16车轮关节描述--b2WheelJointDef结构体7.6.17车轮关节案例--运动的小车7.6.18绳索关节描述--b2RopeJointDef结构体7.6.19绳索关节案例--掉落的糖果7.7模拟传送带案例7.7.1案例运行效果7.7.2碰撞监听器--MyContactListener类7.7.3布景类--Box2DLayer类7.8光线投射案例7.8.1案例运行效果7.8.2b2RayCastInput结构体与b2RayCastOutput结构体7.8.3光线检测类--MyRayCast类7.8.4布景类--Box2DLayer类7.9模拟爆炸案例7.9.1案例运行效果7.9.2光线投射回调类--b2RayCastCallback类7.9.3自身的光线投射回调类--RayCastClosestCallback类7.9.4布景类--Box2DLayer类7.10LiquidFun流体物理引擎7.10.1LiquidFun流体物理引擎的相关知识7.10.2波浪制造机案例7.10.3软体案例7.11本章小结
第8章更加丰富的游戏功能--扩展2D控件8.1UI系列控件8.1.1基础知识8.1.2fnt字体文件的制作8.1.3几个简单的案例8.2Control系列控件8.2.1基础知识8.2.2几个简单的案例8.3EditBox控件8.3.1基础知识8.3.2一个简单的使用案例8.4TableView控件8.4.1基础知识8.4.2表格控件的使用案例8.5本章小结
第9章开发游戏的利器--Lua的使用9.1概述9.2Lua脚本语言简介9.2.1简易性9.2.2高效性9.2.3可扩展性9.2.4可移植性9.3Lua脚本语言的基本语法9.3.1数值与类型9.3.2表达式9.3.3语句9.3.4函数9.4使用Lua搭建场景的案例9.5使用Lua调用C++的案例9.6本章小结
第10章便捷的游戏开发工具--CocoStudio10.1CocoStudio的下载及安装10.1.1CocoStudio的下载10.1.2CocoStudio的安装10.2动画编辑器的使用及相关文件的加载10.2.1用动画编辑器制作骨骼动画10.2.2用动画编辑器制作换帧动画10.2.3加载及使用动画的相关知识10.2.4一个简单案例的开发10.3控件编辑器的使用及相关文件的加载10.3.1控件编辑器的使用10.3.2加载及使用控件的相关知识10.3.3一个简单案例的开发10.4场景编辑器的使用及相关文件的加载10.4.1场景编辑器的使用10.4.2加载及使用场景的相关知识10.4.3一个简单案例的开发10.5数据编辑器的使用及相关文件的加载10.5.1数据编辑器的使用10.5.2数据获取的相关知识10.5.3一个简单案例的开发10.6本章小结
第11章综合案例--让子弹飞11.1游戏的背景及功能概述11.1.1游戏开发背景概述11.1.2游戏功能简介11.2游戏的策划及准备工作11.2.1游戏的策划11.2.2Android平台下游戏开发的准备工作11.3游戏的架构11.3.1各个类的简要介绍11.3.2游戏框架简介11.4布景相关类11.4.1场景管理类BulletsSceneManager11.4.2欢迎布景类LoadLayer11.4.3菜单布景类MenuLayer11.4.4排行榜布景类RankLayer11.4.5关于布景类AboutLayer11.4.6帮助布景类HelpLayer11.4.7游戏布景类BulletsLayer11.5游戏开发的辅助类11.5.1普通飞机辅助类NormalPlane11.5.2大飞机辅助类BigPlane11.5.3道具辅助类Property11.6工具及常量类11.7引擎引用入口类--AppDelegate11.8游戏的优化及改进
第12章综合案例--泡泡龙游戏12.1游戏的背景及功能概述12.1.1游戏开发的背景概述12.1.2游戏的功能介绍12.2游戏的策划及准备工作12.2.1游戏的策划12.2.2iOS平台下游戏的准备工作12.3游戏的架构12.3.1游戏中各类的简要介绍12.3.2游戏的框架简介12.4游戏常量头文件--AppMacros12.5场景相关类12.5.1游戏场景管理类--ShootBubbleSceneManager12.5.2主场景布景类--StartLayer12.5.3选关布景类--ChooseGKLayer12.5.4游戏布景类--ShootBubbleLayer12.5.5帮助布景类--HelpLayer12.5.6排行榜布景类--JFBLayer12.5.7关于布景类--AboutUSLayer12.6引擎引用入口类--AppDelegate12.7游戏的优化及改进12.8本章小结
前言/序言
《Unity 3D游戏开发实战指南:从入门到精通》 内容简介: 本书是一本面向 Unity 3D 游戏开发的深度实战指南,旨在帮助读者掌握 Unity 引擎的核心功能,理解游戏开发的关键流程,并能够独立完成具有一定规模的 3D 游戏项目。全书围绕一个贯穿始终的综合性项目展开,通过实际案例讲解,让理论知识与实践操作紧密结合,实现“学以致用”的学习目标。 第一部分:Unity 基础与核心概念 第一章:Unity 引擎概览与开发环境搭建 深入介绍 Unity 引擎的架构设计,包括其组件化思想、MonoBehaviour 生命周期、以及 Unity 编辑器的核心工作流程。 详细指导读者完成 Unity Hub 和 Unity 编辑器的安装与配置,涵盖不同版本的选择、模块化安装策略,以及推荐的插件和工具。 讲解 Unity 项目的创建、组织和管理,包括场景的创建与保存、资源导入与管理、以及对项目文件夹结构的理解。 案例: 搭建一个功能完善的 Unity 开发环境,导入并预览一个基础的 3D 场景。 第二章:3D 场景构建与物体操控 讲解 Unity 中 Transform 组件的原理,包括位置(Position)、旋转(Rotation)、缩放(Scale)的数学表示与操作方法。 介绍各种 Primitive(基本图元)的使用,以及 Mesh Filter 和 Mesh Renderer 的作用。 讲解 GameObject(游戏对象)的创建、实例化、克隆与销毁。 深入探讨 Unity 的坐标系,包括世界坐标系、局部坐标系以及它们之间的转换。 案例: 在场景中创建一系列 3D 物体,并使用代码精确控制它们的位置、旋转和缩放,实现基础的物体动画。 第三章:材质、纹理与光照系统 详解 Unity 的材质(Material)和着色器(Shader)系统,理解 PBR(Physically Based Rendering)材质的工作原理。 讲解纹理(Texture)的导入、属性设置(如压缩格式、Mipmap)以及在材质中的应用。 深入介绍 Unity 的光照模型,包括全局光照(Global Illumination)、实时光照与烘焙光照的区别与应用。 讲解各种光源类型(Directional Light, Point Light, Spot Light, Area Light)的特性与使用技巧。 案例: 为场景中的物体赋予逼真的材质和纹理,并布置各种光源,营造不同的光影效果。 第四章:用户输入与交互 讲解 Unity 的输入系统(Input System)的两种主要方式:旧版 Input Manager 和新版 Input System。 详细演示如何通过键盘、鼠标、触摸屏和游戏控制器获取用户输入。 介绍射线检测(Raycasting)技术,用于实现鼠标点击物体、拾取等交互功能。 案例: 实现玩家角色对鼠标点击的响应,如角色转向、执行攻击动作;实现通过键盘 WASD 控制角色移动。 第五章:脚本编程基础(C) 介绍 C 语言在 Unity 中的核心应用,包括变量、数据类型、运算符、控制流语句(if-else, for, while)。 讲解类(Class)、对象(Object)、继承、多态等面向对象编程(OOP)的核心概念。 重点讲解 MonoBehaviour 的生命周期函数(Awake, Start, Update, FixedUpdate, LateUpdate 等)及其调用时机。 介绍常用的内置类和函数,如 Vector3, Quaternion, Mathf, Debug 等。 案例: 编写第一个 C 脚本,实现一个简单的计时器,并在场景中显示。 第二部分:核心游戏机制开发 第六章:角色控制器与物理引擎 深入理解 Unity 的物理引擎(PhysX),包括刚体(Rigidbody)、碰撞器(Collider)的类型与配置。 讲解碰撞检测(OnCollisionEnter, OnCollisionStay, OnCollisionExit)和触发器检测(OnTriggerEnter, OnTriggerStay, OnTriggerExit)的原理与应用。 开发基于 Character Controller 组件的角色控制器,实现平滑的移动、跳跃和重力模拟。 案例: 为玩家角色添加 Rigidbody 和 Collider,实现与场景中其他物体的物理碰撞,并优化角色移动的物理表现。 第七章:动画系统与角色行为 讲解 Unity 的动画系统(Mecanim),包括 Animator Controller、Animation State、Transition、Parameter 的配置。 演示如何导入和配置 3D 模型动画,实现角色的行走、奔跑、跳跃、攻击等动画状态切换。 讲解 Root Motion 的概念及其在动画驱动移动中的应用。 案例: 为玩家角色添加动画控制器,实现根据输入和状态自动切换行走、跑步、待机等动画。 第八章:UI 系统与交互界面 讲解 Unity 的 UI 系统(UGUI),包括 Canvas、RectTransform、Image、Text、Button、Slider 等常用 UI 组件。 演示如何创建和布局复杂的 UI 界面,如生命值条、道具栏、菜单系统。 讲解事件系统(Event System)和按钮交互的实现。 案例: 设计并实现一个包含生命值显示、得分显示和暂停菜单的游戏 UI。 第九章:音效与背景音乐 讲解 Audio Source 和 Audio Listener 组件的作用。 演示如何导入和播放音效(SFX)和背景音乐(BGM)。 介绍 Audio Mixer 的使用,实现音效的混合、分组和音量控制。 案例: 为角色的移动、跳跃、攻击添加对应的音效,并为游戏背景添加音乐。 第十章:粒子系统与特效 讲解 Unity 的粒子系统(Particle System)的强大功能,包括发射器、粒子属性、渲染模块等。 演示如何创建各种视觉效果,如爆炸、火焰、雨雪、魔法特效。 案例: 为角色的攻击技能添加酷炫的粒子特效,为场景环境增加动态粒子元素。 第三部分:进阶游戏开发与优化 第十一章:场景管理与加载 讲解 Additive Scene Loading(附加场景加载)和 Single Scene Loading(单一场景加载)的区别与应用。 实现场景之间的无缝切换,优化玩家的游戏体验。 案例: 实现游戏主菜单场景与游戏关卡场景的切换。 第十二章:脚本通信与事件驱动 讲解不同脚本之间获取对方组件的常用方法(GetComponent, GetComponentInChildren, FindObjectOfType)。 介绍委托(Delegate)和事件(Event)机制,实现松耦合的脚本通信。 案例: 实现游戏得分系统,让击败敌人(Enemy 脚本)的逻辑能够通知 UI 显示(UIScore 脚本)更新得分。 第十三章:AI(人工智能)基础 讲解简单的 AI 路径寻找(Pathfinding)算法,如 A 算法(通过第三方插件或手动实现)。 实现敌人的巡逻、追逐玩家、攻击等基础 AI 行为。 案例: 为游戏中的敌人设计巡逻和追逐玩家的 AI。 第十四章:数据持久化与存档 讲解 PlayerPrefs 的使用,用于存储简单的游戏数据(如最高分、设置)。 介绍 JSON 或 XML 格式的数据存储,实现更复杂的游戏存档。 案例: 实现游戏的存档与读档功能,保存玩家的进度和设置。 第十五章:性能优化技巧 讲解 Unity 的性能分析器(Profiler)的使用,定位性能瓶颈。 介绍常见的性能优化技术,包括 Draw Call 优化、Batching、LOD(Level of Detail)、遮挡剔除(Occlusion Culling)。 优化脚本性能,减少不必要的计算和内存分配。 案例: 对当前项目进行性能分析,并应用相应的优化手段提升帧率。 第十六章:构建与发布 讲解 Unity 的构建设置,包括平台选择(PC, Android, iOS 等)。 演示如何打包和发布游戏到不同平台。 案例: 将开发完成的游戏构建并生成可执行文件。 全书特点: 实战驱动: 以一个完整的 3D 游戏项目为载体,贯穿整个开发流程,让读者在实践中学习。 由浅入深: 从 Unity 基础知识开始,逐步深入到核心游戏机制和高级开发技巧。 概念清晰: 对 Unity 各个核心概念进行透彻的讲解,帮助读者建立扎实的理论基础。 代码详尽: 提供大量高质量、可运行的代码示例,并进行详细的解释。 问题导向: 针对游戏开发中常见的痛点和难点,提供解决方案。 循序渐进: 学习路径清晰,适合零基础或有一定开发经验的 Unity 学习者。 本书内容涵盖了从 Unity 引擎的初学者入门到独立开发一个功能完整的 3D 游戏所需的关键知识点和实践技能,是 Unity 游戏开发者不可多得的参考手册。