【深圳大学计算机游戏开发】实验3 二维游戏动画合成

一、实验目的与要求

1.了解二维游戏动画合成原理。

2.熟悉Cocos2d-x中的用户交互、触摸事件、碰撞检测机制。

3.熟悉CocoStudio动画编辑器的使用,了解骨骼动画。

二、实验内容与方法

1.完成游戏编译(10分)

成功编译并运行教材P128“游戏动画实例-侠客行”。

2.增加计分板功能和回合制 10分)

记录成功/失败次数,增加计分板功能;将游戏改为回合制游戏。

3.增加英雄Defend动作 15分)

利用CocoStudio设计英雄Defend动作,并将此功能在游戏中加载。

4.修改游戏bug15分)

修改游戏中出现的明显bug。

5. 游戏优化升级(10分)

自行发挥想象力,优化游戏功能。

6.完成实验报告 40分)

截图记录关键步骤,分析实验结果,撰写心得体会。

三、实验步骤与过程

1.完成游戏编译(10分)

成功编译并运行教材P128“游戏动画实例-侠客行”。

(1)在class文件下添加源代码

(2)在resource文件下添加资源文件

(3)编译运行代码

2.增加计分板功能和回合制 (10分)

记录成功/失败次数,增加计分板功能;将游戏改为回合制游戏。

(1)在AnimationScene.h中添加参数

(2)在AnimationScene.cpp中添加全局变量

(3)添加记分板,记录双方胜场数和当前回合数

(4)判断每回合的胜方并修改记分板

(5)修改游戏为回合制,获胜方式为——三局两胜制

(6)运行程序如下图所示

3.增加英雄Defend动作 15分)

利用CocoStudio设计英雄Defend动作,并将此功能在游戏中加载。

(1)设计defend动作

(2)导出项目并放入resource文件

(3)在config_set.h中添加DEFEND状态

(4)添加防御按钮

(5)绑定点击事件

(6)在Hero.h中添加防守状态

(7)设置防守时扣血效果

(8)添加防守状态的动画更新

(9)运行效果如下

4.修改游戏bug15分)

修改游戏中出现的明显bug。

【1】点击攻击按钮时,玩家和敌人会同时攻击

解决:在攻击按钮响应中删去敌人攻击部分

【2】玩家被攻击到后,会无法进行操作。

解决:删除Hero.cpp中对受伤判断的判定

【3】当玩家被攻击到时,并没有播放受到攻击的动画

解决:在Hero.cpp中添加播放受击动画

【4】敌人总是往左走,并停在左边边界

解决:在AIManger.cpp中调整两方向概率相等

【5】玩家和敌人攻击后的碰撞检测存在问题

解决:更改MyContactListener.cpp中的矩阵大小

【6】有时候一次攻击会造成非常多次伤害

观察:查看MyContactListener.cpp中的攻击受创部分,以玩家攻击敌人为例。

分析:这两个部分的原意是在进行一次攻击后将攻击状态设为flase避免重复扣血。然而,因为此时其状态state仍为ATTACK,所以update函数会又将攻击状态改为true。故而会出现重复扣血。

解决:先修改state为STAND后再修改攻击状态。

5. 游戏优化升级(10分)

自行发挥想象力,优化游戏功能。

【1】玩家的攻击状态会被攻击按钮打断重置

解决:增加是否正在攻击判断,若正在攻击,则不响应攻击按钮

【2】对动画播放结束的判定存在问题

解决:在动画的最后一帧添加帧事件

【3】背景云动画衔接不连贯

解决:转为静态图

四、实验结论或心得体会

本次实验的游戏存在大量bug且文件数量众多,存在一定难度。通过此次实验,我学会了运用cocostudio动画编辑器进行动画编辑,以及通过运行游戏来找出bug不断修改,逐渐优化游戏。

(by 归忆)

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
内容简介   本书从实践的角度出发,详细介绍3D游戏开发的高级技术,并具体描述了一个游戏引擎的构建过程。全书着重讨论三个主题:游戏开发的一般过程;实时渲染过程;角色动画。所有主题均围绕一个具体的游戏开发系统Fly3D SDK2.0加以介绍。   本书旨在为当今的三维游戏引擎技术提供一个综合的解决方案,使读者尽快地进入开发者角色,了解整个游戏开发过程并初步具备游戏引擎开发能力。   本书适合作为高等院校相关专业的教学参考书,同时可供相关技术人员和游戏开发人员阅读。 编辑推荐   本书从实践的角度出发,详细介绍3D游戏开发的高级技术,并具体描述了一个游戏引擎的构建过程。全书着重讨论三个主题:游戏开发的一般过程;实时渲染过程;角色动画。所有主题均围绕一个具体的游戏开发系统Fly3D SDK2.0加以介绍。   本书旨在为当今的三维游戏引擎技术提供一个综合的解决方案,使读者尽快地进入开发者角色,了解整个游戏开发过程并初步具备游戏引擎开发能力。   本书适合作为高等院校相关专业的教学参考书,同时可供相关技术人员和游戏开发人员阅读。 作者简介   Alan Watt 英国谢菲尔德大学计算机科学系讲师,是该校计算机图表学研究室主任,曾经编写过多本优秀著作,包括《3D计算机图形学》和《The Computer Lmage》。 Fabio Policarpo 工作在里约热内卢的软件开发者,他是Paralelo计算机公司的创始人,目前正致力于三维动作多玩家游戏的研究。 目录 出版者的话 专家指导委员会 译者序 前言 第一部分 高级游戏系统剖析 第1章 高级游戏系统剖析I:构造过程和静态光照 1.1 数据结构 1.1.1 顶点 1.1.2 面 1.1.3 包围盒 1.2 构造过程 1.2.1 从场景几何中创建BSP树 1.2.2 路径规划的凸体和PVS计算 1.2.3 处理复杂的地形 1.2.4 BSP叶节点中的面 1.2.5 寻找叶凸体 1.2.6 凸体和伪人口 1.2.7 潜在可视集 1.3 光照贴图的构造 1.3.1 生成光照贴图的坐标 1.3.2 光照贴图的打包 1.3.3 对光照贴图的解释 1.4 BSP管理 1.5 高级静态光照——辐射度 附录1.1 构造实践 附录1.2 辐射度理论基础 第2章 高级游戏系统剖析Ⅱ:实时处理 2.1 视见和BSP 2.1.1 生成视见约束体的面 2.1.2 远近裁剪面和视见约束体 2.2 照相机控制 2.3 使用BSP的基本碰撞检测和反弹 2.3.1 碰撞和BSP遍历 2.3.2 粒子,场景检测和反弹 2.4 特殊的碰撞检测和反弹 2.4.1 AABB的定义 2.4.2 AABB类的定义和静态成员的定义 2.4.3 碰撞检测和碰撞反弹 2.4.4 使用AABB的伪碰撞反弹 2.4.5 使用AABB的碰撞检测 2.4.6 AABB顶点与场景面相交 2.4.7 场景顶点与AABB面相交 2。4.8 AABB边与场景边相交 2.4.9 更精确的碰撞检测 2.4.10 使用碰撞阈值 2.5 基本的路径规划 附录2.1 实时处理的演示 第3章 高级游戏系统剖析Ⅲ:软件设计与应用编程 3.1 应用的种类 3.1.1 插件 3.1.2 前端 3.1.3 工具 3.2 Fly3D引擎体系结构 3.2.1 FlyMath 3.2.2 FlyDirectX 3.2.3 FlyRender 3.2.4 FlyEngine 附录3.1 编写一个插件 第二部分 实时渲染 第4章 实时渲染 4.1 简介 4.2 顶点、像素和贴图 4.2.1 基本的逐像素着色 4.2.2 着色和坐标空间 4.2.3 25年来主流的插值着色方法和颜色贴图 4.2.4 标量表示 4.3 因式分解法 4.3.1 使用因式分解着色模型的逐像素着色——各向同性模型 4.3.2 使用因式分解着色模型的逐像素着色——各向异性模型 4.4 BRDF和真实材质 4.5 使用BRDF进行逐像素着色 4.6 环境贴图参数化 4.6.1 环境贴图参数化:立方映射 4.6.2 环境贴图参数化:球面映射 4.6.3 环境贴图参数化:对偶抛物面贴图 4.6.4 环境贴图——可比点 4.6.5 立方贴图和向量规范化 4.7 实现BRDF:可分离的近似 4.8 着色语言和着色器 4.8.1 着色语言:简单的历史回顾 4.8.2 RenderMan着色语言 4.8.3 实时渲染的着色语言 第5章 实时渲染:实践 5.1 基本着色器 5.1.1 渲染状态 5.1.2 着色器排序 5.1.3 着色器类的实现 5.2 渲染状态 5.2.1 全局设定 5.2.2 局部设定 5.3 着色器实例 5.3.1 环境映射和铬映射效果——玻璃、金属和铬 5.3.2 移动发光告示牌 5.3.3 简单栅栏效果 5.3.4 高级栅栏效果 5.3.5 监视器效果 5.4 实时硬件渲染 5.4.1 顶点编程 5.4.2 像素编程 5.4.3 使用寄存结合器的像素编程 5.4.4 纹理地址编程 5.4.5 纹理地址编程——Phong映射 5.4.6 顶点和像素编程以及多步着色器 5.5 动态纹理 5.6 特效 5.6.1 燃烧尾迹 5.6.2 加速器 5.6.3 脉冲星 附录5.1 使用和探索着色器 附录5.2 NVIDIA GeForce 3上的顶点编程 附录5.3 NVIDIA寄存结合器操作 第6章 几何处理 6.1 简介 6.2 推动因素和定义 6.2.1 离线和实时阶段 6.2.2 拓扑因素 6.2.3 离散简化与连续简化 6.2.4 物体内部分辨率变化 6.2.5 对称性/可逆性 6.2.6 局部简化操作 6.3 排序(误差)标准 6.3.1 排序标准——外观相似 6.3.2 排序标准——局部体积不变 6.3.3 排序标准——二次误差度量 6.3.4 排序标准——简化外壳 6.4 简化与属性 6.4.1 简化与游戏纹理 6.4.2 简化和蒙皮模型 6.4.3 算法框架 6.4.4 顶点去除算法的重新三角形划分 6.5 实例分析 6.5.1 实例分析1——渐近式网格技术 6.5.2 实例分析2——使用微分几何 6.5.3 实例分析3——网格重新划分算法MAPS 附录6.1 数学背景 附录6.2 演示 第三部分 动画制作 第7章 角色动画 7.1 简介 7.2 顶点动画合成 7.3 骨架动画 7.4 低层次动画管理 7.4.1 行进的路径规划 7.4.2 骨架动画和面向对象的动画控制 7.4.3 对障碍物的躲避 7.4.4 路径规划总结 附录7.1 用四元数描绘旋转 附录7.2 四元数的实现 附录7.3 角色动画中效率的考虑 第8章 动画成形方法 8.1 简介 8.2 样条框架 8.3 自由形状变形 8.4 扩展自由形状变形(EFFD) 8.5 曲线变形——铰线 8.6 皮肤控制 8.6.1 面向表面的自由形状变形(SOFFD) 8.6.2 骨架皮肤精致化 8.6.3 组合皮肤和形状混合 附录8.1 使用径向基函数进行离散数据插值 第9章 高级角色动画之要素 9.1 引言——一种拟人的游戏界面 9.2 将语言表述转变为动画——示例 9.2.1 IMPROV(纽约大学媒体研究实验室) 9.2.2 PAR体系结构(宾夕法尼亚大学人体建模和仿真中心) 9.2.3 具体化的对话界面代理(MIT媒体实验室) 9.2.4 游戏结论 9.3 面部动画、视觉语音和跟踪 9.4 用于控制、渲染和跟踪面部网格的模型 9.4.1 基于图像的建模、渲染和跟踪 9.4.2 跟踪方法 9.4.3 参数化 9.4.4 伪肌肉模型 9.4.5 面片技术 9.5 视觉语音 9.6 面部动画和MPEG-4 9.7 渲染问题 9.8 总结和问题 9.8.1 参数化与照片真实性 9.8.2 网格表示 9.8.3 皮肤的渲染 9.8.4 没有声音很多面部动画更好看 9.8.5 情感和语音 附录9.1 一个伪肌肉模型的实现 第10章 基于运动捕捉的角色动画 10.1 简介 10.2 运动数据 10.3 骨架和MoCap BVH格式 10.4 运动数据的基本处理 10.4.1 加速和减速运动 10.4.2 混合和时间扭曲 10.4.3 对齐运动序列 10.4.4 运动扭曲 10.5 MoCap中的插值 10.5.1 B样条表示法 10.5.2 运动混合——动词和副词 10.6 经典信号处理和MoCap 10.6.1 傅里叶理论 10.6.2 傅里叶理论和非周期数据 10.6.3 傅里叶理论和采样数据 10.6.4 采样和走样现象 10.6.5 反走样滤波器 10.6.6 时间域中的过滤——卷积 10.7 信号处理和MoCap数据 10.7.1 傅里叶域中的插值/外推法 10.7.2 使用拉氏算子的多分辨率滤波 10.8 运动编辑:基于约束的方案 10.8.1 运动中的动力学约束 10.8.2 运动中的运动学约束 10.8.3 每帧重定位法 10.8.4 时空法 附录10.1 示范 第11章 反向运动学原理 11.1 例子——二链臂 11.2 雅可比矩阵 11.3 IK方法 11.3.1 使用雅可比阵的微分方法 11.3.2 最优法 11.3.3 循环坐下降法(CCD) 11.4 反向运动学的实践方案 11.4.1 混合方法——分析法+约束最优化法 11.4.2 混合方法——三阶段:分析法+约束最优化+分析法 11.4.3 防止自碰撞 11.4.4 IK与运动目标 参考文献
内容简介   本书从实践的角度出发,详细介绍3D游戏开发的高级技术,并具体描述了一个游戏引擎的构建过程。全书着重讨论三个主题:游戏开发的一般过程;实时渲染过程;角色动画。所有主题均围绕一个具体的游戏开发系统Fly3D SDK2.0加以介绍。   本书旨在为当今的三维游戏引擎技术提供一个综合的解决方案,使读者尽快地进入开发者角色,了解整个游戏开发过程并初步具备游戏引擎开发能力。   本书适合作为高等院校相关专业的教学参考书,同时可供相关技术人员和游戏开发人员阅读。 编辑推荐   本书从实践的角度出发,详细介绍3D游戏开发的高级技术,并具体描述了一个游戏引擎的构建过程。全书着重讨论三个主题:游戏开发的一般过程;实时渲染过程;角色动画。所有主题均围绕一个具体的游戏开发系统Fly3D SDK2.0加以介绍。   本书旨在为当今的三维游戏引擎技术提供一个综合的解决方案,使读者尽快地进入开发者角色,了解整个游戏开发过程并初步具备游戏引擎开发能力。   本书适合作为高等院校相关专业的教学参考书,同时可供相关技术人员和游戏开发人员阅读。 作者简介   Alan Watt 英国谢菲尔德大学计算机科学系讲师,是该校计算机图表学研究室主任,曾经编写过多本优秀著作,包括《3D计算机图形学》和《The Computer Lmage》。 Fabio Policarpo 工作在里约热内卢的软件开发者,他是Paralelo计算机公司的创始人,目前正致力于三维动作多玩家游戏的研究。 目录 出版者的话 专家指导委员会 译者序 前言 第一部分 高级游戏系统剖析 第1章 高级游戏系统剖析I:构造过程和静态光照 1.1 数据结构 1.1.1 顶点 1.1.2 面 1.1.3 包围盒 1.2 构造过程 1.2.1 从场景几何中创建BSP树 1.2.2 路径规划的凸体和PVS计算 1.2.3 处理复杂的地形 1.2.4 BSP叶节点中的面 1.2.5 寻找叶凸体 1.2.6 凸体和伪人口 1.2.7 潜在可视集 1.3 光照贴图的构造 1.3.1 生成光照贴图的坐标 1.3.2 光照贴图的打包 1.3.3 对光照贴图的解释 1.4 BSP管理 1.5 高级静态光照——辐射度 附录1.1 构造实践 附录1.2 辐射度理论基础 第2章 高级游戏系统剖析Ⅱ:实时处理 2.1 视见和BSP 2.1.1 生成视见约束体的面 2.1.2 远近裁剪面和视见约束体 2.2 照相机控制 2.3 使用BSP的基本碰撞检测和反弹 2.3.1 碰撞和BSP遍历 2.3.2 粒子,场景检测和反弹 2.4 特殊的碰撞检测和反弹 2.4.1 AABB的定义 2.4.2 AABB类的定义和静态成员的定义 2.4.3 碰撞检测和碰撞反弹 2.4.4 使用AABB的伪碰撞反弹 2.4.5 使用AABB的碰撞检测 2.4.6 AABB顶点与场景面相交 2.4.7 场景顶点与AABB面相交 2。4.8 AABB边与场景边相交 2.4.9 更精确的碰撞检测 2.4.10 使用碰撞阈值 2.5 基本的路径规划 附录2.1 实时处理的演示 第3章 高级游戏系统剖析Ⅲ:软件设计与应用编程 3.1 应用的种类 3.1.1 插件 3.1.2 前端 3.1.3 工具 3.2 Fly3D引擎体系结构 3.2.1 FlyMath 3.2.2 FlyDirectX 3.2.3 FlyRender 3.2.4 FlyEngine 附录3.1 编写一个插件 第二部分 实时渲染 第4章 实时渲染 4.1 简介 4.2 顶点、像素和贴图 4.2.1 基本的逐像素着色 4.2.2 着色和坐标空间 4.2.3 25年来主流的插值着色方法和颜色贴图 4.2.4 标量表示 4.3 因式分解法 4.3.1 使用因式分解着色模型的逐像素着色——各向同性模型 4.3.2 使用因式分解着色模型的逐像素着色——各向异性模型 4.4 BRDF和真实材质 4.5 使用BRDF进行逐像素着色 4.6 环境贴图参数化 4.6.1 环境贴图参数化:立方映射 4.6.2 环境贴图参数化:球面映射 4.6.3 环境贴图参数化:对偶抛物面贴图 4.6.4 环境贴图——可比点 4.6.5 立方贴图和向量规范化 4.7 实现BRDF:可分离的近似 4.8 着色语言和着色器 4.8.1 着色语言:简单的历史回顾 4.8.2 RenderMan着色语言 4.8.3 实时渲染的着色语言 第5章 实时渲染:实践 5.1 基本着色器 5.1.1 渲染状态 5.1.2 着色器排序 5.1.3 着色器类的实现 5.2 渲染状态 5.2.1 全局设定 5.2.2 局部设定 5.3 着色器实例 5.3.1 环境映射和铬映射效果——玻璃、金属和铬 5.3.2 移动发光告示牌

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归忆_AC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值