教你用c++代码制作:仙剑奇侠传,火爆人气!

在这里插入图片描述
仙剑奇侠传是中国最为经典的武侠PRG游戏了,跌宕起伏的剧情,深入人心的人设,精心制作的画面。可以说是传承了一代人的青春记忆。

下面是小编整理好的一套C/C++资料,加小编C/C++学习群825414254,获取系统性学习C/C++的学习资料

在这里插入图片描述
2017年5月23日,仙剑奇侠传7正式立项,并采用虚幻4引擎(UE4)制作。意图给广大仙剑迷打造一部画面更加震撼,运行更为流畅的作品。
在这里插入图片描述

炫酷的战斗场面,栩栩如生的人物形象,都是用C++编写脚本,应用动画系统实现的。

因为C++效率高、方便底层交互,所以目前能胜任大型3D游戏编写的编程语言只有C++,那么我们就来聊一聊如何用C++实现人物的动画效果。

一些游戏引擎会采用最简单的直播动画的形式(如Unity的Animation方案)仅支持简单动画播放和CrossFade;一些引擎会采用更高级的动画方案。

具备动画状态机和混合树的方案在如今基本是标配,但是不同引擎的实现也会有功能上的差别,例如Unity的Mecanim系统采用的是假的层次状态机和功能简单混合树(无法插入功能性节点)
在这里插入图片描述

△仙剑5和仙剑6皆采用U3D编写

而UE4的Animation Blueprint就高级很多,可以在混合树插入很多功能性节点(如IK),同时让可视化脚本能够很方便地控制动画行为。

在这里插入图片描述
△仙剑7用虚幻4制作

骨骼动画的想法来源于人体骨骼。例如说,人的上肢所有肌肉和皮肤都受上肢骨胳的影响,而人的踝关节则分别承受小腿骨胳和脚骨的影响。

这个概念的本质上是记录了以树形结构存储的一系列对象的位置、旋转、缩放随着时间变化的动态,其中的每一个对象就是一根骨骼。

在这里插入图片描述
在游戏引擎中,骨骼动画通常以两个形态存在,原始数据和转换后数据:

原始数据储存了最适合用户进行动画编辑制作的数据,比如3DMax导出的FBX格式动画,或是Unity中使用动画编辑工具制作的动画。这类数据格式简单,并且不做压缩,比如使用单独的Track来储存位移、旋转、缩放的XYZ三个通道。原始数据可以直接用于编辑和播放,但是内存开销和CPU开销通常较大,所以一般不这么做。
在这里插入图片描述

△仙剑五中的一个3D模型

转换后数据储存了对原始数据进行加工后的版本,通常在游戏引擎的导入资源阶段会进行数据转换处理。转换后的动画数据通常经过压缩,使其内存开销和CPU开销降低。转换后数据可以直接用于动画播放。

动画的播放,根本上来说就是依照时间对动画进行采样,将Pose等采样结果输出。因而,要想对动画进行播放,我们首先得定义动画的采样结果。
在这里插入图片描述

动画的采样结果包含如下几个部分的信息:

Pose信息

RootMotion信息

动画播放状态

Rig标识

RootMotion从字面上来说,就是“根节点的运动”,事实上它表示的是动画驱动游戏对象运动。

不同的动画系统对于RootMotion的实现方式略有不同:Unity引擎通过分析人体骨骼动画来计算角色的运动,UE4采用角色根骨骼运动作为角色运动参考,Morpheme采用额外的Trajectory骨骼来作为角色运动的参考。
在这里插入图片描述

△动画系统处理后的默认动画图

只有默认动画是没有什么实际用途的,还需要编写一段脚本来控制人物切换动画。

在这里插入图片描述
在这里插入图片描述
让我们看一下效果图

在这里插入图片描述
(1)
在这里插入图片描述

(2)
在这里插入图片描述

(3)

在这里插入图片描述
(4)

以上就是运用C++实现人物的行走,打斗,技能释放等等动画效果的一些基本知识了,不得不说,仙剑奇侠传作为一部火了十几年的经典游戏,其制作思路和制作方法都非常值得当今的游戏开发者借鉴和学习的。

当然,制作仙剑奇侠传这样的大型游戏需要有相当深厚的C++功底,对于初学者而言,大型3D游戏太过晦涩高深,直接去编写这种高难度的肯定不是一个合理的选择。

就像我们常说的不能一口吃成个胖子,当我们还只会走的时候,就应该努力把每一步踏的坚实,这样才能在以后的路上健步如飞。

我们可以从一些相对简单的游戏做起,2048就是一款十分风靡的益智类小游戏。
在这里插入图片描述

在编写过程中,我们会运用到数组、界面处理、AI算法等相关知识,能够让初学编程的人在游戏中就能够练习到C++语言的知识,让学习变得更有意思和趣味。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41986518/article/details/88601029