《多啦A梦飞车》

本文详细描述了一款多人竞速游戏《多啦A梦飞车》的开发过程,涉及物理系统、摄像机控制、动画设计以及SDK接入等内容,重点介绍了新手引导、赛车物理、镜头语言和动画优化等关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多啦A梦飞车

类型:多人竞速
视角:3d
乐趣点:多人联机,赛车竞速,探索场景乐趣

请添加图片描述

时间:2015-2018
个人职责:
1、参与原生DEMO研发制作
2、参与游戏基础框架的讨论研发,优化工作
3、负责游戏物理系统实现优化
4、负责游戏内摄像机语言功能
5、整个游戏生命周期期维护
6、负责游戏服务器的部分功能的商讨和研发
7、开发动画编辑工具。特效装配工具
8、优化工作流,制作管理工具:动画状态机相关,动画导入,日志管理等
9、SDK 接入集成以及文档撰写

模块划分:

1、新手引导

引导分为两个部分来实现的,局内和局外,局内需要处理游戏的暂停过度状态,和不同的输入方式。局外只需要处理按钮的点击流程。

局内引导


1、按住引导,上图是左转,需要持续按住左方向摇杆一段时间,如果只是轻点,需要在手指抬起时候再次展示提示UI,此时的状态切换处理是难
点。

2、多按键按住引导
请添加图片描述

上图是漂移教学,需要同时按住方向键和漂移键,如果单纯只按住一边则不能正确触发进程,此类型和上面的按住类型相似,但是多了一个案件,难点在于多了一个输入维度,需要处理好类型之间的重复代码。

局外引导

请添加图片描述
局外引导主要是控制玩家点击,同时分为强制引导章节和开放式引导章节。

区别在于强制引导章节在游戏前期,刚进入游戏之后整个游戏流程都在引导的控制之下,顺序进行。
而到了后期某个新的功能页面开放之后,会触发单独的开放式引导。

这个系统的难点在于,点击聚焦遮罩的制作使用,点击之后的穿透检测按钮,并且触发按钮。

2、局内物理

  • 车身结构
    请添加图片描述
    车身碰撞体构成:
    1、主体车身Capsule

这个碰撞体主要负责碰撞物理,例如和墙壁的碰撞检测,和地面的碰撞检测,车与车之间的碰撞检测

模拟碰撞物理,在车身受到撞击时候,使用脚本获取碰撞方向,碰撞点,根据车当前的速度,计算得出碰撞后赛车的运动状态,并且在碰撞发生之后的一个物理帧中设置完毕

2、道具检测 Box
这个碰撞体是一个触发器,只负责检测功能触发

例如:
1、攻击类道具命中
2、道具盒子捡取
3、进入加速带
4、进入飞行启动带

  • 引擎动力

引擎动力,负责前进速度的值
引擎动力 = 1 则可以前进,加速度则由赛车本身属性决定
引擎动力 = -1 则后退,后退速度为固定值(正式版本没有此功能)
引擎动力 = 0 则停留在原地,例如被道具定身时候

  • 最高速度

由赛车属性决定,可以到达的最大 MPH(英里每小时)值。赛车在引擎动力为1的情况下,如果当前速度高于 最高速度 值则速度会下降,如果当前速度低于 最高速度 则继续加速。

处于冲刺状态时候,则当前最大 MPH 值会突破变得更高

  • 冲刺状态

冲刺有多种分类,加速带,道具,漂移氮气,每种冲刺有自己独立的
加速度,
增加的最大MPH值,
类型枚举

冲刺状态属于一种状态 buff

  • 转向动力

转向动力,负责转向角速度的值
引擎动力 = 1 则左转
引擎动力 = -1 则右转
引擎动力 = 0 则执行

转向的最大角速度和角加速度则由赛车的本身属性决定

  • 漂移

漂移的实现是由,动画 + 物理模拟 + 轮胎印 组成。

在按住漂移按键和任意方向键后,触发漂移,此时按住左方向则向左飘,按住右方向键则右飘。

漂移的动画会使得车身倾斜姿态,同时出现的轮胎印,则表现出正在烧胎的状态。

而物理模拟则是这个设计的精髓,处于漂移状态时候,车身会在漂移的反方向施加一个横向推力,模拟漂移失控。

请添加图片描述

  • 竹蜻蜓

竹蜻蜓是针对多啦A梦 IP 专门设计的玩法模式,在进入专门的飞行区域后,所有赛车将会暂时消失,取而代之的是多啦A梦的道具,竹蜻蜓。此时玩家处于飞行模式,飞行模式依然是可以操控的,只不过漂移无法使用,只可以控制方向。

请添加图片描述

竹蜻蜓模式的实现主要是使用路径点的方式,加之移动范围的横向计算。

  • 反重力

在游戏中,很多地图是可以反重力设计的,类似于,上墙。

反重力的实现需要用到一个重力过度触发器,通过这个触发器之后,赛车所收到的重力方向就会改变,例如进入上墙重力触发器后,重力方向就会变为垂直于墙面的方向。而进入下墙跳台之后,会有另外一个重力触发器使得赛车的重力恢复到正常的 Y 轴负方向。

  • 全地形

反重力的设计,再加上地图场景的特殊设计就可以变成类似太空星球的全地形。赛车在这类特殊赛代上可以在开在道路的两面,可以悬在头顶行驶等等。

  • 地面吸附

在开发过程中,多次发现赛车会出现离地的情况,特别是地面上有碰撞体接缝,水平起伏等情况。在曲面上行驶过程中更是出现抖动和无法爬坡的情况。

针对这个情况,我使用了地面吸附的方式来解决。地面吸附难点在于,在一般情况下赛车需要保持地面吸附,但是在高台处比如说跳台,或者起跳时候需要可以离地而起。

  • 高处落下

处理从高处落向地面也是一个难点,从高处落下赛车由于重力加速度的作用,使得赛车下落速度过快,很容易穿透地面碰撞体,在实验过程中,使用过加厚加多地面碰撞体的方法,均没有彻底解决穿透问题。最后使用了速度预测的方法,才彻底解决。

3、镜头语言

镜头语言在这个游戏中绝对是最重要的部分。竞速游戏赛车前进速度很快,所以镜头一旦处理的不好,很容易影响玩家体验。

秉承

玩家无法发现的镜头,是最好的镜头。

这一原则。这个部分的功能经历了很多轮迭代。

从最初的 FixedUpdate 跟随,到延迟跟随点,到摄像机置入子节点跟随,

从固定旋转角,到插值延迟旋转角跟随,

期间还发现了很奇怪的屏幕“卡帧”现象。

最后,通过大量的实验使用了最关键的补针设计,才解决了。

到现在不知道有没有现成的摄像机插件解决这部分问题。
(后期大多数游戏开发都没有重镜头语言)

4、动画

动画结构分为,赛车动画,角色动画

赛车模型上会有设计给角色绑定的绑定点,角色置入赛车绑定点归零本地坐标即可安装完毕。

角色动画和赛车动画开发过程中的最大难点在于,不下20个赛车的动画控制文件,10个左右的角色动画控制文件,在修改维护上是一个很大的麻烦。

针对这个点,我专门开发了动画控制文件批量生成绑定工具,使用一个基础模板文件(template)拷贝生成新的文件,然后获取到对应不同模型的动画置入新的动画文件中。

至此调试过后的动画控制文件终于可以方便的批量应用到所有赛车和角色。

角色动画和赛车动画都使用了 动画分层的技术,比如在使用道具时候,角色的手臂层会播放投掷道具的动画,但是此时在基础层玩家是播放idle的。

5、SDK

当时的版本接入了国内的一些SDK,用于数据测试。

【资源说明】 1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通。 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 本文介绍了基于QEM(Quadric Error Metrics,二次误差度量)的优化网格简化算法的C和C++实现源码及其相关文档。这一算法主要应用于计算机图形学领域,用于优化三维模型的边形数量,使之在保持原有模型特征的前提下实现简化。简化的目的是为了提高渲染速度,减少计算资源消耗,以及便于网络传输等。 本项目的核心是网格简化算法的实现,而QEM作为该算法的核心,是一种衡量简化误差的数学方法。通过计算每个顶点的二次误差矩阵来评估简化操作的误差,并以此来指导网格简化过程。QEM算法因其高效性和准确性在计算机图形学中广泛应用,尤其在实时渲染和三维打印领域。 项目代码包含C和C++两种语言版本,这意味着它可以在种开发环境中运行,增加了其适用范围。对于计算机相关专业的学生、教师和行业从业者来说,这个项目提供了丰富的学习和实践机会。无论是作为学习编程的入门材料,还是作为深入研究计算机图形学的项目,该项目都具有实用价值。 此外,项目包含的论文文档为理解网格简化算法提供了理论基础。论文详细介绍了QEM算法的原理、实施步骤以及与其他算法的对比分析。这不仅有助于加深对算法的理解,也为那些希望将算法应用于自己研究领域的人员提供了参考资料。 资源说明文档强调了项目的稳定性和可靠性,并鼓励用户在使用过程中提出问题或建议,以便不断地优化和完善项目。文档还提醒用户注意查看,以获取使用该项目的所有必要信息。 项目的文件名称列表中包含了加水印的论文文档、资源说明文件和实际的项目代码目录,后者位于名为Mesh-Simplification-master的目录下。用户可以将这些资源用于种教学和研究目的,包括课程设计、毕业设计、项目立项演示等。 这个项目是一个宝贵的资源,它不仅提供了一个成熟的技术实现,而且为进一步的研究和学习提供了坚实的基础。它鼓励用户探索和扩展,以期在计算机图形学领域中取得更深入的研究成果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值