不想打工
这个作者很懒,什么都没留下…
展开
-
网络炸弹人克隆
What You’ll Learn in This Hour:在真实的游戏中处理网络使用TileMap和TileSet工具创建一个地图结合Sprite和AnimationPlayer来制作动画。使用AutoLoad使脚本成为全局的在这个小时内,我们将创建我们的最终游戏。 它是Nintendo Entertainment System时代传奇游戏Bomberman的克隆版本,但具有一个原作在当时没有的杀手锏:网络多人游戏。游戏由多名玩家在一个自上而下的迷宫中进化,可以通过安放炸弹来打破墙壁并杀死翻译 2021-04-22 19:32:01 · 259 阅读 · 0 评论 -
Godot网络
网络TCP, UDP, and Why It MattersTCP、UDP管理连接远程过程调用TCP, UDP, and Why It MattersTCP、UDP首先,当谈到网络协议时,首先映入脑海的是TCP/IP协议栈,它为整个互联网提供了基本的支持。这背后的原因是很清楚的:TCP在复杂的互联网上工作得很好(记住,它不是无缘无故地被称为“网络”的!),并让你觉得一切都很简单:它是基于连接的,所以你的服务器不会混合多个客户端发送的请求。它保证了可靠性,所以如果请求不能到达目的地,你一定会翻译 2021-03-15 08:38:45 · 1061 阅读 · 0 评论 -
Godot单例和自动加载
Godot Singletons and Autoloads(单例和自动加载)介绍Godot的场景系统功能强大且灵活,但有一个缺点:没有一种方法可以存储多个场景所需的信息(例如,玩家的得分或存货)。可以通过一些解决方法来解决此问题,但是它们有其自身的局限性:您可以使用一个 "主 "场景,它可以加载和卸载其他场景(这些场景作为它的子场景)。然而,这意味着你不能再单独运行这些场景并期望它们能正常工作。可以将信息存储在user://中的磁盘上,然后由需要的场景进行加载,但是频繁的保存和加载数据很麻翻译 2020-09-06 15:49:10 · 921 阅读 · 0 评论 -
视差背景
ParallaxBackground继承: CanvasLayer < Node < Object用于创建视差滚动背景的节点。描述ParallaxBackground使用一个或多个ParallaxLayer子节点来创建视差效果。 每个ParallaxLayer可以使用ParallaxLayer.motion_offset以不同的速度移动。 这会在2D游戏中造成深度错觉。 如果未与Camera2D一起使用,则必须手动计算scroll_offset。属性Vector2 scroll_b原创 2020-09-15 23:19:43 · 404 阅读 · 0 评论 -
编辑器工具
Godot中的脚本可以在所谓的“工具”模式下运行。工具模式允许脚本在编辑器中运行,而不是只在您运行场景时运行。Godot编辑器本身是一个使用Godot构建的应用程序。这就是为什么Godot有这么多控件节点的原因——编辑器使用了所有这些UI元素。因为编辑器只是一个“游戏”,所以它也可以运行脚本。使用工具模式脚本有两种常见的方法:创建一个EditorPlugin或一个EditorScript。虽然编辑器插件(EditorPlugin)包含一个巨大的主题,但是编辑器脚本(EditorScript)更容易理解和翻译 2020-09-17 00:20:00 · 324 阅读 · 0 评论 -
通知系统
Godot有一个通知系统,对象可以通过该系统将消息发送到其他对象。 通知用于引导对象的初始化和删除,并接收通过输入单例或InputEvent系统不可用的事件。 通知系统是一个低级系统,通常在脚本代码中很少使用,但是有时您需要控制更多未公开于脚本公开类的内容。“通知”只是一个数字。 该数字通常对应于其他地方定义的常量(除非您发送自己的不代表常量的通知)。extends Nodefunc _notification(what): if what == MainLoop.NOTIFICATION_WM_翻译 2020-09-18 19:13:45 · 269 阅读 · 0 评论 -
与Godot其他脚本语言的对接
Interfacing with Other Godot Scripting LanguagesGodot的内部架构允许多个脚本语言和系统共存于一个项目中,甚至可以相互通信。系统的工作方式会影响GDScript内部的工作方式。调用在其他脚本语言中定义的方法尤其容易,因为它是专门为Godot设计的。调用对象上方法的统一方法是使用Object.call或Object.callv。 无论您使用哪种语言调用,它都可以所有语言工作。GDScript的调用机制的工作方式完全相同。 如果键入some_object翻译 2020-09-20 02:56:06 · 601 阅读 · 0 评论 -
处理输入
在游戏开发中,输入管理是最重要的主题之一。输入是区别其他类型的娱乐和视频游戏。如果玩家不能控制自己的角色,游戏将会非常无聊。Godot engine处理了一些困难的任务,比如从设备中获取原始数据,并为游戏开发者提供了一个简单的界面。它以一种非常有趣的方式将用户输入与其节点系统集成在一起。该引擎还提供了各种帮助程序来简化输入处理。在这一小时中,你将学习如何管理用户输入并让你的游戏做出回应。我们首先来看一下节点是如何从玩家接收输入的。然后我们将继续讨论InputEvent类,这个类包含需要正确响应输入的信息。翻译 2020-09-25 21:57:41 · 333 阅读 · 0 评论 -
暂停游戏
暂停游戏您可以从树中的任何节点调用get_tree().set_paused(true) 来暂停游戏。 但是,从那时起,您的游戏将变得无响应,因为树中的所有节点都将停止处理。 你需要将一些你想处理的节点列入白名单,而不考虑暂停状态。 可以通过pause_mode属性将节点设置为停止,继续处理或继承父节点的设置。 如果设置为继承,则场景根在暂停时将停止处理。让我们看看暂停的操作。创建一个新节点,添加一个名为PauseMenu的AcceptDialog,并将下面的GDScript附加到节点中,如清单11.1翻译 2020-09-25 23:30:10 · 624 阅读 · 0 评论 -
场景切换
场景切换可能永远不会通过使用加载和卸载其子级的场景来切换场景。 对于简单的游戏,这太过头。 建议使用“场景树”来切换场景。场景树负责场景切换。你可以调用get_tree().change_scene(String path)来加载一个场景,并将其设置为当前场景。如果你想事先加载场景,你可以使用preload()或load(),并将场景保存在一个变量中,然后,用该变量作为函数参数调用get_tree().change_scene_to(PackedScene)。让我们尝试切换场景。创建两个场景。其中一个翻译 2020-09-25 23:45:18 · 2272 阅读 · 0 评论 -
后台加载
后台加载有时,资源太大,无法在几帧内加载。在加载完成之前,游戏会无响应。一般来说,不提供长时间加载的视觉反馈是不可取的。Resource Interactive Loader(资源交互式加载器)Resource Interactive Loader是一个能够逐步加载Resource的类。 可以由Resource Loader单例通过调用ResourceLoader.load_interactive(String path)创建。preload() 在编译时加载资源。你不能使用变量作为函数的参数,翻译 2020-09-26 00:32:01 · 734 阅读 · 0 评论 -
处理退出请求
处理退出请求当游戏收到退出信号时,有可能玩家并不是故意退出的,如果他有一段时间没有保存,那就会令人气愤。丢失游戏数据会对你的游戏声誉造成不利影响。在退出时,最好有一个对话框弹出,询问玩家是想先保存还是自动保存。任何退出请求都应妥善处理。让我们看看如何通过通知系统来实现这一点。创建一个新节点,并附加清单11.5所示的GDScript。LISTING 11.5 手动处理退出请求extends Nodevar dialog = ConfirmationDialog.new() func _ready(翻译 2020-09-26 00:50:12 · 332 阅读 · 0 评论 -
Godot特殊路径
Godot具有处理玩家设备的文件系统的功能,这在创建和管理配置和保存文件时非常重要。本小时将重点介绍脚本API,帮助你以一种可移植的、多平台的方式处理这个问题。特殊路径除了用户操作系统提供的标准文件系统路径外,Godot还提供了两个特殊的可移植文件路径:Resources directory(资源目录)和User directory(用户目录)。资源路径你项目的根文件夹就是资源根。从那里,所有的资源都被加载到游戏中。它用res://前缀标识,它作为标准路径(如file://或http://)中的协议翻译 2020-09-28 19:36:58 · 683 阅读 · 0 评论 -
游戏配置
游戏配置在游戏中很常见的一个东西就是选项菜单。用户可以选择难度、视频和音频设置、控制配置等。玩家也希望游戏能在两次会话之间记住这些选项。为了处理这个问题,你需要在玩家的机器里保存一个文件,里面有选定的选项,这样游戏就可以在下次保存和加载。Godot提供了一个名为ConfigFile的特殊类。这个类有方法在一个类似INI格式的文件中添加、编辑和检索选项。它可以处理文件中的各个部分,以便更好地组织内容,并负责加载和保存磁盘中的文件。ConfigFile类的使用实例如清单12.1所示。LISTING 12.翻译 2020-09-29 19:32:04 · 449 阅读 · 0 评论 -
处理文件
处理文件虽然ConfigFile类很适合存储配置,但它的功能非常有限。不建议用它来处理比较复杂的保存游戏。Godot提供了一个通用的类来对文件进行一般的读写。File类可以创建任何类型内容的文件,包括二进制格式。它有存储和检索任何类型数据的选项,并且能够压缩和加密文件。创建和写入文件向文件写入的第一件事是创建一个新的文件对象。然后你需要从磁盘上打开一个文件。该类有向文件写入Variant类型的函数,这可能会帮助你处理内容。清单12.3给出了一个如何向文件写入玩家数据的例子。LISTING 12.3翻译 2020-09-29 20:47:23 · 337 阅读 · 0 评论 -
处理目录
处理目录处理目录在文件夹中列出文件管理文件和目录创建目录删除文件和目录移动、重命名和复制文件检查是否存在Q&A处理目录除了文件类,Godot还包含一个目录类。这个是负责管理文件系统中的文件夹。它可以列出、删除、重命名和移动文件。在文件夹中列出文件一个简单的开始方式是列出某个目录中的所有文件。Godot有一些函数来实现这种行为。这与通常的处理方式有些不同,让我们来看一个例子,如清单12.5所示。LISTING 12.5 从文件中检索数据extends Nodefunc _ready()翻译 2020-10-18 19:48:09 · 449 阅读 · 0 评论 -
导入资源
导入资源支持的扩展拖放Import dock(导入停靠栏)导入后在一个文件作为游戏资源使用之前,需要先导入它,这样引擎才知道如何处理它。有些文件在使用前需要进行处理。支持的扩展Godot引擎支持许多资源扩展。建议您在创建资源之前检查该格式是否受引擎支持,因为事后转换资源可能会对其质量产生不利影响(表14.1)。TABLE 14.1已识别的扩展及其相应的资源类型Resource TypeExtensionsAudioStreamOGGVorbis.oggAudioStre翻译 2020-10-19 19:42:10 · 339 阅读 · 0 评论 -
组织项目目录
组织项目目录小型项目较大的项目按内容组织Godot Engine的核心在于其Node系统。为了最大限度地提高生产力,项目组织必须考虑到Node系统。这延伸到项目内部的目录组织。小型项目对于包含10个或更少场景的小型项目,你可以将文件和文件夹以任何你认为最舒服的方式放置。你也可以把所有的东西都放在项目的根目录下,只要你能快速找到你想要的东西(见清单14.1)。小型项目中的目录组织一般不需要太在意。LISTING 14.1 在项目根目录中排列所有项目文件//project.godot/main.t翻译 2020-10-20 23:36:44 · 114 阅读 · 0 评论 -
版本控制软件
版本控制软件文本格式仓库结构项目根作为仓库项目作为子目录仓库中的多个项目创建一个仓库克隆仓库制作分支克隆Godot演示项目仓库Fork, Clone, PushQ&A版本控制软件(VCS)是一种程序,可以用来跟踪不同版本之间的变化,同步和合并来自不同贡献者的文件,查找引入问题的特定版本等。它们主要用于编程,但也可以改编用于其他作品。Godot在创建时就考虑到了开源和VCS,因此,项目文件可以以文本格式保存,与大多数VCS兼容。在本专题中,我们将学习如何在Godot项目中使用Git,一个广泛使用的V翻译 2020-10-21 20:37:33 · 381 阅读 · 0 评论 -
2D材质
2D材质画布项材质其他画布项目属性画布项材质材质是改变物体外观的特殊资源,对于3D模型尤其有用。2D材质极其简单。在这个问题上,你没有什么可以做的,因为2D引擎是基于像素和纹理直接绘制到屏幕上的,不需要处理顶点位置和光照,这在3D中是需要的。要向节点添加材质,必须从Node2D或Control派生。然后,使用Inspector,你可以将材质属性设置为一个新的CanvasItemMaterial资源。如果你点击编辑它,你会发现只有两个属性。混合模式设置了如何将节点插入到画布中。就像你在图形编辑软件中可翻译 2020-10-22 19:53:06 · 264 阅读 · 0 评论 -
2D灯光
2D灯光2D阴影Q&AGodot还提供了2D游戏中光照的可能性,虽然考虑到光照流动的维度有限,方式要简单得多。不过,它还是可以为一些游戏增加不错的效果。Light2D节点负责将光线添加到一个2D世界中(表16.4)。为了让它工作,你需要添加一个纹理来赋予它形状和颜色。这个纹理将被投射到屏幕上的其他对象上,使它们获得光线。注意,它不会影响视口背景。TABLE 16.4 Light2D的属性Property DescriptionEnabled启用或禁用灯光效果。Ed翻译 2020-10-23 20:58:33 · 336 阅读 · 0 评论 -
声音
声音播放声音导入音频文件播放声音声音往往被人忽视,它是游戏氛围中非常重要的一部分,因为它有助于增加玩家对游戏世界的沉浸感。在Godot内部播放音频基本上有两种方式:直接输出(如常见的背景音乐)和从玩家在场景中的位置播放(通常为音效)。这意味着你可以不需要额外的努力就能拥有立体声或环绕声的设置。导入音频文件Godot支持两种开箱即用的音频格式:.wav和Ogg Vorbis。理想情况下,你应该使用.wav文件来制作短小的音效,因为它们的解析和播放速度更快,而Ogg Vorbis则用于制作较长的音轨,如翻译 2020-10-26 19:50:18 · 386 阅读 · 0 评论 -
位置音频和多普勒效应
位置音频和多普勒效应位置音频2D中的位置音频3D中的位置音频多普勒效应位置音频Godot提供了一种非常简单的方法来在游戏中启用位置音频。 位置音频意味着声音的音量在立体声或环绕声设置的每个扬声器中都会发生变化,以便听众可以将声音与特定方向关联。要启用位置音频,请对2D游戏使用AudioStreamPlayer2D节点,对3D游戏使用AudioStreamPlayer3D节点。 它们可以放置在游戏世界中的任何位置,并且玩家将聆听相对于当前摄像机所在位置的声音。 声音会根据玩家在世界上的位置以及观看的方向翻译 2020-10-28 19:58:49 · 374 阅读 · 0 评论 -
音频总线
音频总线音频总线总线的布局TRY IT YOURSELF总线链独奏,静音和旁路音频总线有音频背景的人都会熟悉总线的概念。从本质上讲,总线是音频信号的一条路线,它既可以到另一条总线,也可以直接到输出。每条总线可以有自己的音量和效果链,让你可以灵活地以任何方式处理音频,并重复使用效果。Master总线是主总线,不能重命名或删除。每一个音频信号最终都会进入主总线,从那里跟随用户的音频输出。TIP 使用主总线可能会想更改音量或对主总线应用效果(请参见图19.3)。 但是,您应该避免这种情况。 该总线是翻译 2020-10-29 19:34:58 · 642 阅读 · 0 评论 -
区域效果
区域效果区域效果2D音频区域效果3D音频区域效果动态音频通过动画控制音频通过脚本控制音频区域效果除了扬声器设置的位置音频以外,当音频播放器位于某个游戏区域内时,Godot还具有可以应用于声音的效果。 这样可以产生一些效果,例如当玩家角色在洞穴内时增加混响,或者当角色在水下时发出低沉的声音。2D音频区域效果如果你正在制作一款2D游戏,你也可以利用区域效果。首先你需要一个区域,可以用Area2D节点(与物理引擎交互的同一个节点)来设置。Area2D节点有一个特殊的属性,可以将其声音重定向到特定的音频总翻译 2020-10-30 20:40:58 · 123 阅读 · 0 评论 -
粒子系统-2D粒子
2D粒子2D粒子Particles2D节点处理材质随机属性曲线Particles2D设置试一试粒子动画本地坐标与全局坐标脚本化粒子假设你正在制作一个平台游戏,玩家在草地砖上奔跑。为了让它看起来很神奇,每一次脚步都会有草叶和尘土飞扬。你可以通过为每一次脚步创建许多Sprites来实现这种效果,让它们随机飞走,并在几秒钟后删除它们。但那样做起来会很麻烦,而且会占用大量的性能。相反,可以使用粒子!在这一小时中,你将学习什么是粒子以及何时使用它们。你还将学习如何在场景中添加2D和3D粒子,以及如何编辑它们的(许翻译 2020-11-05 20:41:11 · 252 阅读 · 0 评论 -
粒子系统-3D粒子
3D粒子3D粒子Particles节点好消息在3D中使用2D关于性能Q&A3D粒子你现在可能已经知道了,2D和3D在Godot中是彼此的镜像。凡是2D中存在的节点,在3D中也存在。所以,自然而然地,Particles2D节点有一个3D的替代品,叫做Particles节点。Particles节点Particles节点会发出3D粒子。它不需要纹理,而是需要一个网格。然而,如果你在属性中查看,你会发现不是一个网格属性,而是一个叫做Draw Passes的属性(图20.11)。FIGURE 2翻译 2020-11-07 23:28:18 · 543 阅读 · 0 评论 -
视口
视口视口视口视口被看作是我们的世界场景和Godot的低级部分之间的桥梁,比如负责将场景渲染成帧的视觉服务。大多数时候,视口是一只害羞的野兽:到目前为止,我们几乎没有遇到过它,我们所有的项目都渲染得很好。这是因为我们场景的根节点(我们在GDScript中调用get_node(’/root’)得到的那个节点)本身就是Godot在游戏启动时自动创建的一个Viewport(图21.1)。FIGURE 21.1当我们的游戏开始后,根节点始终是一个自动添加的视口。鉴于视口要渲染我们世界的每一帧画面,我翻译 2020-11-08 19:53:01 · 160 阅读 · 0 评论 -
画布层
画布层画布层TRY IT YOURSELF视差滚动播放分屏将分屏添加到场景Q&A画布层现在我们已经开始深入研究渲染了,值得一提的是Godot提供的另一个很酷的工具,可以使我们的生活更轻松:CanvasLayer。在制作2D游戏时,绘制元素的顺序非常重要,例如,它决定了角色是站在树的下方还是上方。对于这个问题,一个简单的解决方案是使用Z属性来排序节点的绘制顺序。这在一开始工作得很好,但是当我们的场景变得越来越复杂时,它就变得越来越难确保子场景的节点没有错误的Z值。最重要的是,在处理一个3D游翻译 2020-11-09 19:10:02 · 164 阅读 · 0 评论