Godot的培训项目-Pong(第2部分)创建和设置球

我向你问好,哈布罗维特! 在这一部分中,我将为Pong游戏创建和自定义球。 如果您错过了开始,那么就在这里 。 文章级别仍然是初学者。


在剪辑下,仍然有许多屏幕截图。

打电话给孩子们,欢迎在猫的陪伴下


为了进行编辑,可通过双击项目名称或通过“编辑”按钮来打开项目。



重新启动引擎时,先前创建的场景没有打开。 您可以通过在“文件系统”面板中双击它来打开它,Unity中的模拟面板称为Project。


现在,您可以创建球,此引擎的正确顺序,身体及其两个继承者:对撞机和图形。 但是我将以不同的顺序进行操作,同时我将告诉您为什么需要这种顺序的节点。


我想对球做的第一件事就是看球。 因此,我将从图形开始。 我可以在任何图像编辑器中绘制一个3 x 3像素的白色正方形。 但是,我不喜欢在第三方程序中执行,我可以在引擎中执行的操作。


要将节点添加到场景,请在场景面板中单击加号。 (当然,可以使用上下文菜单或热键)



在打开的窗口中将显示各种节点的巨大列表。 都需要查看它们,理想情况下阅读文档中的每个节点,或者至少通过阅读每个节点的描述直接查看列表中的所有节点。


这将有助于更好地了解引擎中的节点以及如何处理它们。 对于我们当前的目标,Polygon2D节点是合适的。



默认情况下,所有节点都相对于根节点创建为子节点,如果需要为特定节点创建子节点,则应首先选择父节点来创建它。 显然,对于根节点,这不是必需的。


现在该注意窗口的右侧了,这里有一个检查器面板。



对于最小的

正方形是由4个角度和4个边组成的几何图形,其所有边彼此相等。


多边形的大小决定了角度的数量,之后会出现一个点列表,应输入点的坐标,我个人更喜欢从左上角开始,并围绕这些点顺时针移动。 概述围绕中心的图形。 默认情况下,在Godot中,所有节点的中心是场景的左上角。 并且允许引入像素分数。



现在,您可以设置“变换”并将球定位在场景的中心。
为了更好地观看,您需要稍微增加窗口主要部分中的游戏场景。
在鼠标上滚动滚动条可放大或缩小场景,单击滚动条并移动鼠标可移动场景。



现在您需要使球移动,主要有两种方法:


  1. 您可以更改“变换”设置,并以与将球移到舞台中央相同的方式移动球,但是使用程序代码可以顺畅地进行。
  2. 您可以在该图中添加一个物理元素的节点,例如“ Solid”或“ Physical object”。 并移动物理引擎对该对象的影响。

物理引擎使您可以使用最准确,平滑和可信的运动,而不必亲自描述所有复杂的计算。


另外,除了球的运动之外,我们还需要确定球是否遇到了屏幕的边界? 如果面临,哪个边界? 球撞到球拍了吗? 如果面对哪些球拍和哪一部分? 但是,使用物理引擎最容易验证这些内容。


通常,有一个非常简单的方案可供选择。 如果游戏中的所有对象都沿着网格移动,并且有一个移动队列。 例如,在国际象棋中,黑人球员在白人球员完成其移动之前不会开始其回合。 而且没有球员有权一次移动几块。


在此类游戏中,直接更改“变形”设置非常方便。
对于所有其他情况,都有一个物理引擎。


现在,我认为很明显在Pong游戏中使用物理引擎更加方便。


为此,您需要球,现在这是节点“ Polygon2D”添加节点“ PhysicsBody2D”



但是有三个这样的节点:运动,刚性和静态。 根据描述:


  1. 运动学是根据编写的程序代码移动的物理对象,不遵循物理引擎。 (我们的选择)
  2. 刚性是完全从属于物理引擎的物理对象。
  3. 静态是静止的物理对象。

这些节点的类似物在我所知道的所有游戏引擎中都可用,在Unity中,它们具有相同的名称和属性。


添加“ KinematicBody2D”节点后,将出现错误通知。



将光标移到该光标上,很明显该错误的原因是该节点缺少对撞掩码,在这种情况下,为我提供了以下两个选项之一:CollisionShape2D或CollisionPoligon2D。


我已经尝试创建多边形,现在我想看看表单。 在创建时报告另一个错误。 这次她说面罩似乎在那里,但是没有人创造出面罩形状。


它是在“检查器”面板中创建的。 对于我们的正方形,“ RectangleShape2D”形状适合以下设置。



现在,您可以开始在屏幕周围移动球,但是,使用物理引擎,您只能移动带有所有继承人的“物理身体”,并且它将相对于其父对象移动。 在这种情况下,主体和对撞机将相对于舞台上绘制的正方形移动,该正方形在屏幕上保持静止。 解决方法非常简单:


  • 为了使实体相对于场景移动,必须将其作为场景的子节点。


  • 为了使绘制的正方形随身体移动,必须使它相对于身体成为孩子。


现在移动身体,我将移动碰撞遮罩和绘制的正方形。


球已经准备好移动了,下次我们将最终发射它,看看它在比赛中的样子。


对于您在评论中的批评,我将感到高兴。

Source: https://habr.com/ru/post/zh-CN466491/


All Articles