【用Unity开发一款横板跳跃游戏部分需要学习的技术点指南】

news2024/12/24 11:37:03

***

用Unity开发一款横板跳跃游戏部分需要学习的技术点指南


空洞骑士是一款基于横板平台跳跃的传统风格2D动作冒险游戏,庞大的游戏世界交错相通,玩家控制小虫子去探索幽深黑暗的洞穴,成为了一代人茶余饭后的惦念,深受玩家喜爱。
请添加图片描述
这类平台跳跃游戏是游戏开发初学者以及独立游戏开发者比较青睐的类型,也是诸多开发者们开发游戏Demo的第一站。

为了让更多次游戏开发者们能够做出自己心中想要的平台跳跃游戏Demo,这篇文章我们就讲解一下使用Unity3D引擎制作一款平台跳跃类的游戏需要掌握的核心技术。

1 横板游戏的基本角色控制

2 横板游戏的摄像机控制

3 支撑完整开发的平台跳跃系统

本篇文章涉及到的源码及素材资源,还有更多游戏开发资源,可以通过扫描下方的二维码免费获取
请添加图片描述

首先谈谈第一点,横板游戏的角色控制。

这里我们涉及到引擎如何控制一个游戏体完成移动的知识。

对于Unity3D引擎来说,移动一个物体的核心原理是每一帧更新物体在3D坐标系中的位置。对于横板游戏来说,我们关注的是水平方向和垂直方向的移动,而对于Z轴纵深方向的移动,除了某些特殊情况外,角色部分基本不需要考虑。

对于移动而言,我们可以使用基本的平移方法Translate来完成移动,也可以通过更新Transform,Postion来完成移动,同样可以通过对角色对象添加刚体组件Rigidbody,然后通过设置刚体组件的velocity属性来完成移动。亦可以通过使用Unity引擎提供的角色控制器CharacterController 完成对角色移动的控制。还有一些提供移动方法的插件这里就不做过多的赘述。
请添加图片描述面对众多的移动选择,该选择哪一种成了初学者同学最容易头疼的地方,由于刚体和角色控制器都自带了碰撞检测,所以很多同学会选择这两者之一作为2D平台跳跃移动的方式。

但这恰恰是很多这类游戏在开发到中后期才发现会遇到很多棘手的问题,并且为了维护和修改这些问题都付出了非常巨大的代价和精力,最后甚至没有办法从根本解决问题,导致很多游戏最终无法开发完成,开发者也付出了高昂的学习成本。

所以这里我们推荐使用最基本的Translate方法来完成移动,因为它足够简单,没有过多的牵连,可以为开发者们提供最大程度的可操作空间,同时因为刚体组件和角色控制器会涉及到一定的引擎物理,而平台跳跃游戏中产生的物理情况,大部分并非模拟现实的物理情况,所以我们需要自己来为它开发相关的物理部分,这时使用引擎自带的物理反而会产生很多的不可控问题,导致意外情况的增加,因为Translate方法本身没有自带碰撞检测,所以我们还需要提供一些列可维护性以及可控制性强的物理检测方法。

来看看下图中的方法:
请添加图片描述这里我们使用射线检测的方式来完成,这个方法包括但不限于撞墙检测、脚下地面检测、头顶碰撞检测、穿越平台检测、爬坡检测等。

这里使用角色控制器的同学可能遇到过类似跳跃失败、爬坡控制性不强的问题,出现这个问题的具体原因上面已经做过阐述。
请添加图片描述

第二点:横板游戏的摄像机控制。

这里我们也有很多的知识点需要学习,首先是摄像机对于目标的跟随,2D横板游戏的摄像机要与角色始终保持相对的坐标偏移,同时为了提供更好的玩家体验,摄像机要做缓动跟随,以防止玩家快速反复左右移动的时候出现摄像机抖动现象,做到这一点之后,为了优化游戏的体验,我们也需要对摄像机的操控进行更多功能的实现,比如当玩家高速移动时,摄像机应该多”照射”到主角前方的部分,为玩家躲避障碍和敌人提供便利,同时摄像机缩放,以及当玩家在某些区域时(例如到画面最左边或右边)的时候停止跟随等,都是相当重要的知识点。请添加图片描述

最后我们说说平台跳跃系统

这个系统包括二段跳,具体表现为从可穿越平台上跳下来,从下方跳上可穿越平台后停在可穿越平台表面,站在可移动平台上角色会跟随平台移动等等,这些技能知识点对于开发这类型的游戏也十分重要。

技术中包含了大量的对于碰撞检测,角色细微控制的知识和参数设计,对于学习到如何精巧的控制一个角色完成此类动作有很大的帮助,一旦我们掌握了这些内容,对于横板平台跳跃类的其他部分,比如本次我们开设的《元气骑士》训练营中涉及到的攀墙跳、冲刺等技术,同学们是可以做到举一反三,自行学会的。请添加图片描述
关于2D平台跳跃游戏的技术点我们就分析到这里,授之以鱼,不如授之以渔,为了让喜欢游戏开发的小伙伴能掌握更多的游戏开发技术,我们开设了《空洞骑士》开发5天训练营,让大家从0做出一款游戏Demo。

我们希望同学们通过训练营掌握的是学习方法以及分析问题,解决问题的能力,这也是成为一个游戏开发高手,成为一个高级的开发者必备的能力之一。扫描下方二维码即可免费报名,报名后还会进入专属的学习辅导群
请添加图片描述
学完你能收获什么?

  1. 掌握游戏开发基本流程

  2. 掌握空洞骑士的动作系统

  3. 掌握角色攀墙滑行和跳跃的原理与实现

  4. 掌握可移动平台的原理与实现

  5. 掌握求职阶段准备方式和流程,具备应对面试的能力

  6. 了解游戏开发工程师职业发展路径

  7. 针对个人情况,在直播现场得到职业发展建议

快扫描下方二维码立刻免费参加本次训练营吧!

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1430574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Peter算法小课堂—Dijkstra最短路算法

大家好,我们人见人爱、花见花开、车见车爆胎的Peter Pan来啦,hia~hia~hia。今天,我们今天来学习毒瘤的最短路算法啦。啊这……什么是Dijkstra算法?长文警告⚠ 正经点啊 手算样例 大家思考一下,你在手算样例的时候&am…

MATLAB实现随机森林(RF)回归与自变量影响程度分析

本文分为两部分,首先是对代码进行分段、详细讲解,方便大家理解;随后是完整代码,方便大家自行尝试。另外,关于基于MATLAB的神经网络(ANN)代码与详细解释,我们将在后期博客中介绍。 1…

Redis常用数据结构与应用场景

常用数据结构 StringHashListSetZset String常用操作 String应用场景 Hash常用操作 hash应用场景 Hash结构优缺点 优点 同类数据归类整合存储,方便数据管理相比String操作消耗内存与spu更小相比string更节省空间 缺点 过期功能不能使用在field上,只用用在key上Redis集群…

Navicate 连接云服务器MySQL

Navicate 连接云服务器MySQL 1.打开Navicate,点击左上角的连接,选择MySQL 第一步:第一个页面是常规,按照图上的标注填写 第二步,点击 SSH ,进入下面的页面 第三步,点击测试连接

FreeRTOS任务相关的API函数

本篇文章记录我学习FreeRTOS的任务相关的API函数。主要涉及FreeRTOS的任务创建和删除函数、任务挂起和恢复函数。希望我的分享对你有所帮助。 读者如果需要实战FreeRTOS动态/静态任务创建和删除,可以参考以下文章: FreeRTOS动态 / 静态创建和删除任务-CS…

C++初阶 内存管理和模板

目录 一、new 1.1什么是new? 1.2为什么要有new? 1.3使用new 1.4 new的超级好处 二、delete 2.1什么是delete? 2.2为什么要有delete? 2.3使用delete 三、 malloc / free和new / delete的共同点和区别 四、浅谈模板 4.1什…

嵌入式学习第三篇——51单片机

目录 1,嵌入式系统 1,嵌入式系统的定义 2,单片机的定义 2,51单片机 1,开发环境 2,开发板使用的基本思路 1,查看原理图,查看芯片手册 2,获得调用硬件的管…

使用Arcgis对欧洲雷达高分辨率降水数据重投影

当前需要使用欧洲高分辨雷达降水数据,但是这个数据的投影问题非常头疼。实际的投影应该长这样(https://gist.github.com/kmuehlbauer/645e42a53b30752230c08c20a9c964f9?permalink_comment_id2954366https://gist.github.com/kmuehlbauer/645e42a53b307…

4K Video Downloader forMac/win:畅享高清视频下载的终极利器!

在如今的数字时代,高清视频已经成为人们生活中不可或缺的一部分。无论是观看精彩的电影、音乐视频,还是学习教育类的在线课程,我们都希望能够以最清晰流畅的方式来欣赏。而为了满足这一需求,我们需要一款功能强大的高清视频下载软…

一文读懂C++的类和对象以及多态的原理

现实生活中,关于类和对象最好的例子是自然界的动物类,本文将以此为场景逐步引入C的概念,达到学习的目的。因为C这门语言本身有很多繁杂的内容,而网上的资源也是参差不齐,有的人见山谈山遇水聊水,有多人故弄…

Vue3 - 从 vue2 到 vue3 过渡,这一套就够了(案例 + 效果演示)(二)

目录 一、组合式 API 的使用 1.1、watch 函数 1.2、watchEffect 函数 1.3、toRef 和 toRefs 1.3.1、toRef 1.3.2、toRefs 1.4、vue3 的声明周期 一、组合式 API 的使用 1.1、watch 函数 与 vue2.x 中的 watch 配置功能一致,但是多了一些坑: 这…

大数据环境搭建(一)-Hive

1 hive介绍 由Facebook开源的,用于解决海量结构化日志的数据统计的项目 本质上是将HQL转化为MapReduce、Tez、Spark等程序 Hive表的数据是HDFS上的目录和文件 Hive元数据 metastore,包含Hive表的数据库、表名、列、分区、表类型、表所在目录等。 根据Hive部署模…

10 分钟在K8s 中部署轻量级日志系统 Loki

转载至我的博客 https://www.infrastack.cn ,公众号:架构成长指南 Loki 是什么? Loki是由Grafana Labs开源的一个水平可扩展、高可用性,多租户的日志聚合系统的日志聚合系统。它的设计初衷是为了解决在大规模分布式系统中&#x…

WebGL+Three.js入门与实战——绘制水平移动的点、通过鼠标控制绘制(点击绘制、移动绘制、模拟画笔)

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

MATLAB矩阵的操作(第二部分)

师从清风 矩阵的创建方法 在MATLAB中,矩阵的创建方法主要有三种,分别是:直接输入法、函数创建法和导入本地文件中的数据。 直接输入法 输入矩阵时要以中括号“[ ]”作为标识符号,矩阵的所有元素必须都在中括号内。 矩阵的同行元…

IEC104 S帧超时判定客户与服务端不匹配造成的异常链接问题分析

2、通过ss命令发现确有链接端口变化,与设备约一天一次的重连,通过抓包(tcpdump -vvv -nn port 1001 -w 0926.cap)分析得以下现象 2.1、异常情况时未对设备的I帧均匀的回S帧进行确认,正常情况时均匀的回S帧进行确认 2.…

数据在内存中的存储(上)

1. 整数在内存中的存储 整数的2进制表示方法有三种:即原码、反码和补码 三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位最 高位的一位是被当做符号位,剩余的都是数值位。 正…

深度学习水论文怎么缝模块?搭积木永不过时!(附80个即插即用模型)

深度学习如何创新?如何水模型?总结来说就八个字:排列组合,会讲故事。说直白点,就是缝模块。 先看看别人怎么做,然后根据自己的实际情况将这些模块来一波随机组合,这样效率会高很多。我这边已经…

冰冻天气恰逢春运,“观冰精灵”化身电力供应守护者

据中国路网,截至2月1日14时,受降雪及路面结冰影响,河北、山西、内蒙古、黑龙江、江苏、安徽、河南、山东、西藏、陕西、宁夏、甘肃、新疆共封闭路段66个(涉及44条高速公路、5条普通国道、5条普通省道),关闭…

Pandas.Series.clip() 修剪数值范围 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本: 本文基于 pandas2.2.0 编写。 关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。 传送门: Pandas API参考目录 传送门: Pandas 版本更新及新特性 传送门&…