限时回归!!!3D版《空洞骑士》!!!

空洞骑士是一款基于横板平台跳跃的传统风格2D动作冒险游戏。庞大的游戏世界交错相通,玩家控制小虫子去探索幽深黑暗的洞穴,成为了一代人茶余饭后的惦念,深受广大玩家们的喜爱。

这类平台跳跃游戏一般是游戏开发初学者以及独立游戏开发者们比较青睐的类型,也是诸多开发者们开发游戏Demo的第一站。

请添加图片描述
为了让更多的游戏开发者们能够做出自己心中想要的平台跳跃游戏Demo,今天我们讲解如何使用Unity3D引擎制作此类游戏。

我们需要掌握以下三项基本的游戏开发技术。

1、角色操控以及手感优化的技术要点

2、角色的四方向射线检测的技术要点

3、各种平台的技术要点
在这里插入图片描述
一、角色操控以及手感优化的技术要点

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

对于Unity3D引擎来说,移动一个物体的核心原理是每一帧更新物体在3D坐标系中的位置。

对于横板游戏来说,我们关注的是水平方向和垂直方向的移动,而对于Z轴纵深方向的移动,除了某些特殊情况外,角色部分基本不需要考虑。
请添加图片描述
而对于移动而言,我们可以使用基本的平移方法Translate来完成移动,也可以通过更新Transform、Postion来完成移动。同样可以通过对角色对象添加刚体组件Rigidbody,然后通过设置刚体组件的velocity属性来完成移动。

当然你也可以通过使用Unity引擎提供的角色控制器CharacterController 完成对角色移动的控制。还有一些提供移动方法的插件这里就不做过多的赘述。

面对众多的移动选择,该选择哪一种成了初学者们最容易头疼的地方。由于刚体和角色控制器都自带了碰撞检测,所以很多同学会选择这两者之一作为2D平台跳跃移动的方式。

许多游戏开发者在游戏开发到中后期时往往会遇到很多棘手的问题。开发者们为了维护和修改这些问题往往付出了非常巨大的代价和精力,却始终没有办法从根本解决问题。这就导致了很多游戏最终无法开发完成,开发者为此也付出了高昂的学习成本。

请添加图片描述
所以这里我们推荐大家使用最基本的Translate方法来完成移动。因为它足够简单,没有过多的牵连,可以为开发者们提供最大程度的可操作空间。

同时,因为刚体组件和角色控制器会涉及到一定的引擎物理,而平台跳跃游戏中产生的物理情况,大部分并非模拟现实的物理情况,所以我们需要自己来为它开发相关的物理部分。

这时使用引擎自带的物理反而会产生很多的不可控问题,导致意外情况的增加。因为Translate方法本身没有自带碰撞检测,所以我们还需要提供一些可维护性以及可控制性强的物理检测方法。

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

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

这里主要的技术要点在于为了达到精确检测和掌控力更强的控制碰撞。平台跳跃类游戏一般不会使用Unity3D自带的刚体及碰撞器来完成各项碰撞检测,取而代之的是使用基础射线。

为了能够检测角色脚下、头顶、前后方是否碰撞各类平台以及怪物、道具等,我们需要搭建一个健壮的射线检测基础架构。这里需要注意的技术要点有:射线检测的数量、检测的时机、检测的层、检测的起点、方向以及长度等。可以帮助我们完成游戏中需要的各项检测,同时能够达到非常精确的控制以及按需检测等多项好处,是同学对于平台类游戏碰撞检测的必学核心技术点之一。
请添加图片描述三、各种平台的技术要点

最后我们说说游戏中各项平台的功能。横板跳跃游戏中,平台分为基础平台、可向下穿越平台、可移动平台等类型;又可以组合出可移动基础平台、可移动向下穿越平台、不可移动基础平台和不可移动向下穿越平台等多种类型的平台。

在要点二中我们可以知道,对于角色检测平台,一定离不开射线的辅助。而平台的制作,主要是基于平台的位置和位移,来精确的修正角色的位置和位移。比如在落到平台时,角色需要精确的修正Y轴坐标为平台接触点坐标,而跳起来顶到头上的平台时,需要修正坐标为接触点坐标减去角色碰撞器高度等。

对于移动平台,初学者容易进入一个误区,就是让角色成为平台的子物体以帮助角色在平台移动。而这样操作的结果是丧失了精确性,容易产生更多bug,并且不符合我们的框架设计原理。

正确的做法是通过每帧修复角色的位移,让角色位置能够叠加平台的移动方向的速度产生的位移以及角色自身控制产生的位移,这样才能够在统一的框架下完成精确的处理。

关于2D平台跳跃游戏的技术点我们就分析到这里,为了让喜欢游戏开发的小伙伴能尽早开发出自己的《空洞骑士》类游戏Demo,我们开设了《3D版空洞骑士》4天训练营,让大家从0做出一款游戏Demo。扫描下方二维码回复[空洞骑士]即可免费参与
在这里插入图片描述

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

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

相关文章

【DRAM存储器十八】DDR3介绍

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考资料:《镁光DDR3数据手册》 、《JESD79-3E》 最近忙于工作&#xff0…

Linux使用匿名管道实现进程池得以高效通信

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:Nonsense—Sabrina Carpenter 0:50━━━━━━️💟──────── 2:43 🔄 ◀️ ⏸ ▶️ …

python基础四------完结(概念在下面,代码看不懂了再看)

# a_list [1,2,3,4,5] # # print(a_list)# 根据下标来删除列表中的元素 # 爬取的数据中 有个别的数据 是我们不想要的 那么我们就可以通过下标的方式来删除 # del a_list[2] # print(a_list)# b_list [1,2,3,4,5] # print(b_list) # pop是删除列表中的最后一个元素 # b_list.…

Kali 基本命令大全

一、系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件- (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpu…

AP5216 平均电流型LED降压恒流驱动IC 手电筒汽车摩托车灯芯片

产品描述 AP5216 是一款 PWM工作模式, 高效率、外围简单、内置功率管,适用于5V~100V输入的高精度降压 LED 恒流驱动芯片。输出最大功率可达9W,最大电流 1.0A。AP5216 可实现全亮/半亮功能切换,通过MODE 切换:全亮/半亮…

SAP HANA 报错信息,如何根据报错关键词去进行处理

HANA建模其实上手会比较快,基本会SQL就可以进行开发。 在实际开发中,难点一个是建模思路,另外一个则是建模中报错的处理。 现在将HANA中报错进行一个整理,这里的并不是完整的报错信息,大家可以根据关键词进行查看。 …

ChatGPT更新了Mention功能,集结若干GPTs作战,AI智能体的心智入口;向量数据库的挑战和未来

🦉 AI新闻 🚀 ChatGPT更新了Mention功能,集结若干GPTs作战,AI智能体的心智入口 摘要:OpenAI在ChatGPT中引入了一个新功能,允许用户在聊天时任意一个GPTs(即ChatGPT最新推出的AI Agent 智能应用…

scrapy的入门使用

1 安装scrapy 命令: sudo apt-get install scrapy或者: pip/pip3 install scrapy2 scrapy项目开发流程 创建项目: scrapy startproject mySpider生成一个爬虫: scrapy genspider itcast itcast.cn提取数据:     根据网站结构在spider中实现数据采集相关内…

C/C++ - 函数进阶(C++)

目录 默认参数 函数重载 内联函数 函数模板 递归函数 回调函数 默认参数 定义 默认参数是在函数声明或定义中指定的具有默认值的函数参数。默认参数允许在调用函数时可以省略对应的参数,使用默认值进行替代。 使用 默认参数可以用于全局函数和成员函数。默认参…

C语言KR圣经笔记 5.12 复杂声明

5.12 复杂声明 C 语言有时会因为声明的语法而受到谴责,特别是涉及函数指针的声明语法。语法试图使声明和使用一致;在简单的情况下它的效果不错,但在更复杂的情况下会让人困惑,因为声明不能从左往右读,而且括号被过度使…

Linux文本三剑客---sed经典案例

Sed介绍: sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理…

Mybatis-plus原生pages分页未生效的解决方案

文章目录 前言原因1、Mybatis Plus版本的问题2、Mapper.xml文件中SQL语句格式问题3、Mybatis Plus默认分页拦截器问题4、分页参数传参问题5、分页配置的问题 解决方案1、升级对应的Mybatis-plus版本分页插件配置问题3、自定义分页拦截器4、正确的参数5、不同版本的配置文件3.4.…

Hugging Face创始人分享:企业如何在ChatGPT浪潮下实现战略布局

Hugging Face创始人兼首席执行官 Clem Delangue在IBM一年一度的 THINK大会中研讨了当前人工智能发展趋势,特别是ChatGPT模型以及其对行业的影响。他的演讲还涉及到一个关键的议题,在ChatGPT这样的通用模型出现后,企业如何在人工智能领域找到自…

QR 分解cpu程序

1. 代码 Makefile EXE : hello_qrSRC_QR qr_main.c qr_func.c $(EXE): $(SRC_QR)gcc $^ -o $ -lm.PHONY: clean clean:-rm -rf $(EXE) qr_main.c #include "stdio.h"int maqr(double* a,int m,int n,double* q);int main() {int i,j;static double q[4][4],a[4]…

全能相似度计算与语义匹配搜索工具包,多维度实现多种算法,涵盖文本、图像等领域。支持文图搜索,满足您在不同场景下的搜索需求

全能相似度计算与语义匹配搜索工具包,多维度实现多种算法,涵盖文本、图像等领域。支持文图搜索,满足您在不同场景下的搜索需求。 Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索 Similar…

window下如何安装ffmpeg(跨平台多媒体处理工具)

ffmpeg是什么? FFmpeg是一个开源的跨平台多媒体处理工具,可以用于录制、转换和流媒体处理音视频。它包含了几个核心库和工具,可以在命令行下执行各种音视频处理操作,如剪辑、分割、合并、媒体格式转换、编解码、流媒体传输等。FFmpeg支持多…

C++类和对象引入以及类的介绍使用

文章目录 一、面向过程和面向对象的初步认识二、类的引入2.2 类的引入 三、类的访问限定符及封装3.3 访问限定符3.4 【面试题】C中struct和class的区别3.5 类的两种定义方式 四、封装【面试题】面向对象的三大特性 五、类的作用域六、类的实例化七、类对象模型7.1 类对象的存储…

postman之接口参数签名(js接口HMAC-SHA256签名)

文章目录 postman之接口参数签名(js接口签名)一、需求背景二、签名生成规则三、postman js接口签名步骤1. postman设置全局、或环境参数2. 配置Pre-request Scripts脚本 四、Pre-request Scripts脚本 常见工作整理1. js获取unix时间戳2. body json字符串…

day35WEB 攻防-通用漏洞XSS 跨站反射存储DOMBeef-XSS

目录 一,XSS 跨站-原理&分类&手法&探针 1、原理 2、分类 3、危害 二,反射型XSS 1,案例演示 三,存储型XSS 1,案例演示 四,DOM 型XSS 五,XSS 利用环境-XSS 平台&Beef-XS…

探讨UI自动化测试几步骤

随着软件开发的不断发展,UI自动化测试变得越来越重要,它能够提高测试效率、降低人为错误,并确保软件交付的质量。本文将介绍UI自动化测试的一般步骤和一些最佳实践,以帮助开发团队更好地实施自动化测试。 需求分析和选择测试工具&…