Tag: 重力

使用SpriteKit以每秒9.8分钟的速度学习重力

当我们经常看到各种具有落物和碰撞检测等功能的游戏时,我们可能会自己想,将此功能打包到我们自己的应用程序中必须多么复杂。 但是,我正在写这篇文章,向您展示如果您了解SpriteKit的方法,它有多么简单。 如果您不这样做,请不要担心,只需遵循以下步骤。 我们将构建一个利用这两个功能的小型应用程序。 成品看起来像这样。 我将在此应用程序后面提供整个代码,因此请随时关注Xcode。 如果要这样做,您将想要找到一个带雨伞和雨滴的人的图像,并将其添加到资产文件夹中。 我将一路为您介绍有关重力或碰撞检测的任何代码。 首先,打开Xcode并选择New Project-> Game。 取消选中纵向模式,则该应用将仅横向运行。 完成此操作后,请转到GameScene.swift文件。 它附带了Apple已构建的默认应用程序,删除了GameScene类的整个主体。 完成后,您的班级应该看起来像下面的代码片段。 现在,让我们将以下空函数添加回该类。 在整个教程中,每个代码块都将填充有代码块。 创建一个名为RainDrop的新swift文件。 在初始化程序中,我们需要确定其生成位置,大小和图像。 我们还需要将PhysicalBody应用于该节点。 您将在下面的代码片段以及该类的其余部分中看到应用此主体的行。 让我们进一步讨论有关物理身体的路线。 我们向RainDrop类添加了SKPhysicsBody类的实例。 为此,我们需要定义物理物体将采取的形状。 在这种特定情况下,我们希望它是雨滴的大小和形状,这就是我在这里实现的。 不同的形状会改变您的对象在碰撞时与其他对象交互的方式,因此这是一个重要的决定。 SpriteKit还提供了多种默认形状,我们将在其中进一步实现其中之一。 将以下代码行添加到文件中。 您可能需要根据图像的大小调整雨滴的大小。 别忘了还要调整物理物体的大小。 现在,我们需要编写一种方法来产生雨滴,并在GameScene类的update方法期间调用它。 可以将以下代码放在GameScene类中,以实现此目的。 这将在每个更新间隔生成一个雨滴。 如果要减慢雨滴的速度,可以向此函数添加随机数生成器和if语句。 运行该应用程序,它应类似于以下内容。 现在,让我们添加一个不幸的人,他被雨淋住了。 我们还需要给他一个PhysicalBody,它看起来与我们在RainDrop类中所做的非常相似。 创建一个名为Person.swift的新文件,并为其提供以下代码。 上面的代码段还包含一种方法,该方法使我们可以在屏幕上拖动人员。 我们将需要在GameScene类的touchesBegan和touchesMoved方法下调用此方法,并创建Person类的实例。 下面的代码可以解决这个问题。 现在,让我们继续并再次运行该应用程序。 它看起来应如下图所示。 糟糕,现在我们已经为从屏幕上掉下的那个人添加了physicsBody。 让我们添加一个Floor类,以便他可以站立。 地板课也将需要一个PhysicalBody。 这次我们将使用SpriteKit提供的通用形状。 我们将需要在地板类上设置的另一个属性是’isDynamic’属性。 我们将其设置为false,这将使地板能够抵抗重力,这样在应用程序加载时它不会从屏幕上掉落。 可以将以下代码添加到地板类。 我们还需要将地板实例添加到GameScene类。 参见下面的代码。 现在运行您的应用程序,它应如下所示。 为了解决一个问题,我们创建了另一个问题。 该人现在可以站立了,但是雨点正在堆积! […]