限时回归!!!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。扫描下方二维码回复[空洞骑士]即可免费参与
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React一学就会(7): 细说redux及其应用

不知不觉一个星期结束了,很快就要过年了,中间休息了两天,小孩生病,我也有点感冒了,还好,我的这个 React 基础教学课程也基本结束了。大家有不明白的可以留言问我,我一定竭尽所能的帮助你。后面几…

D3703F——应用于音响系统的静音检测电路 当音响系统在放音或快进 / 退时进行静音检测,输出控制信号。

D3703F 是 一 块 汽 车 音 响 静 音 检 测 电 路 。 用 于 音 响 系 统 检 测 在 放 音 或 快 进 / 退 时 进 行 静 音 检 测 。 D3703F 的 的 电 压 范 围 : 3.2V ~ 16V , 信 号 检 测 和 静 音 时 间 可 通 过 外 围 电 阻 、 电 容 来 …

中小型企业知识库建设的秘诀来啦,赶紧收藏起来

知识库是企业的智慧宝库,其中的信息和知识的整合,可以极大地提高工作效率和团队协作能力。尤其对中小企业来说,知识库的建设更是关系企业未来发展的重要因素。那么,怎样有效地构建高效的知识库系统呢?下面这些秘诀值得…

Arthas的使用

1. 简介 官网 线上debug神器,就不过多介绍 2. 环境搭建 win11环境 ,jdk11 2.1 安装 下载地址 2.2 启动 cmd java -jar arthas-boot.jar启动之后会自动检测启动的java服务 1~4 ,springboot是启动类名,所以我选择了3 3. 常用操作 3.…

Hadoop3.x基础(1)

来源:B站尚硅谷 这里写目录标题 大数据概论大数据概念大数据特点(4V)大数据应用场景 Hadoop概述Hadoop是什么Hadoop发展历史(了解)Hadoop三大发行版本(了解)Hadoop优势(4高)Hadoop组成&#xf…

非阿里云注册域名如何在云解析DNS设置解析?

概述 非阿里云注册域名使用云解析DNS,按照如下步骤: 添加域名。 添加解析记录。 修改DNS服务器。 DNS服务器变更全球同步,等待48小时。 添加解析记录 登录云解析DNS产品控制台。 在 域名解析 页面中,单击 添加域名 。 在 …

SkyWalking+es部署与使用

第一步下载skywalking :http://skywalking.apache.org/downloads/ 第二步下载es:https://www.elastic.co/cn/downloads/elasticsearch 注:skywalking 和es要版本对应,可从下面连接查看版本对应关系,8.5.0为skywalking 版本号 Index of /di…

实惨!多本EI接连被各大数据库剔除!2024年EI期刊目录首次更新-附下载

EI目录更新 本月爱思唯尔(Elsevier)官网更新了EI Compendex收录期刊目录,这是2024年第一次更新。 Elsevier发布2024年第一版EI期刊目录 更新时间:2024年1月1日 不同于SCI/SSCI目录每月更新一次的频率,EI目录更新没有…

VBA技术资料MF112:列出目录中的所有文件和文件夹

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…

构建高效外卖系统:利用Spring Boot框架实现

在当今快节奏的生活中,外卖系统已经成为人们生活中不可或缺的一部分。为了构建一个高效、可靠的外卖系统,我们可以利用Spring Boot框架来实现。本文将介绍如何利用Spring Boot框架构建一个简单但功能完善的外卖系统,并提供相关的技术代码示例…

解析线上HBase集群CPU飙高的原因与解决方案

在日常的运维工作中,CPU负载高是一种常见的故障状况,它可能对系统的正常运行和性能产生不利影响。为了准确地定位具体的异常原因,掌握一些专业的工具和方法是至关重要的。本文将通过一个实际的案例,详细介绍如何排查在线上HBASE集…

【C++】C++入门基础讲解(二)

💗个人主页💗 ⭐个人专栏——C学习⭐ 💫点击关注🤩一起学习C语言💯💫 导读 接着上一篇的内容继续学习,今天我们需要重点学习引用。 1. 引用 在C中,引用是一种特殊的变量&#xff…

动态gif图如何在线做?这一招分分钟生成

Gif动图是怎么制作呢?Gif动画已经是日常聊天娱乐必备的了,那么这种有趣的gif表情要怎么操作呢?很简单,使用gif动图生成(https://www.gif.cn/)工具无需下载软件,小白也能轻松操作。可上传MP4格式…

Vue2 VS Vue3 生命周期

一、生命周期的概念 Vue组件实例在创建时要经历一系列的初始化步骤,在此过程中Vue会在合适的时机,调用特定的函数,从而让开发者有机会在特定阶段运行自己的代码,这些特定的函数统称为:生命周期钩子(也会叫…

每日一道面试题:Java中序列化与反序列化

写在开头 哈喽大家好,在高铁上码字的感觉是真不爽啊,小桌板又拥挤,旁边的小朋友也比较的吵闹,影响思绪,但这丝毫不影响咱学习的劲头!哈哈哈,在这喧哗的车厢中,思考着这样的一个问题…

对Spring当中AOP的理解

AOP(面向切面编程)全称Aspect Oriented Programminge AOP就是把系统中重复的代码抽取出来,单独开发,在系统需要时,使用动态代理技术,在不修改源码的基础上,将单独开发的功能通知织入(应用)到系统中的过程,完…

shopee,lazada卖家自养号测评补单的方法和技巧

现在很多卖家都是自己管理几百个账号,交给服务商不是特别靠谱 一:送测不及时,产品时常送不出去 二:账号质量不稳定,账号一天下了多少你也不清楚,如果下了很多单万一封号被关联了怎么办 三:as…

ESP8266采用AT指令连接华为云服务器方法(MQTT固件)

一、前言 本篇文章主要介绍3个内容: (1)ESP8266-WIFI模块常用的AI指令功能介绍 (2)ESP8266烧写MQTT固件连接华为云IOT服务器。 (3)介绍华为云IOT服务器的配置过程。 ESP8266是一款功能强大…

vite引入图片用法

在 vite 中 引入图片方式跟其他脚手架创建项目的引入方式不一样 要使用 import.meta.url 他是一个 ESM 的原生功能 const mapPicSrc ref(new URL(/assets/charts/bdf.png, import.meta.url).href) 如果使用 require 引入会报错 说没有 require 模块

【Shell实战案例面试题】输入网卡的名字,来输出网卡的IP

1.问题 参数后判断要加"" 名字为空时显示ip 2.分析 把本机的所有网卡名列出来,来引导用户输入 使用命令列出所有网卡信:ifconfig/ip a 设计一个函数,把网卡名作为参数,函数返回网卡的IP 在获取某个网卡IP时,考虑网…