Construct中的物理:基础教程

60次阅读
没有评论

共计 2998 个字符,预计需要花费 8 分钟才能阅读完成。

Construct 中的物理:基础教程

Construct 团队推荐的教程!这意味着它包含了有用、高质量的信息,将帮助你成长为一名游戏开发者。

Construct 包含了由 Box2D 物理引擎驱动的 Physics 行为。这允许你让对象以现实世界的物理方式移动。点击此处打开演示,查看它模拟的物理类型。物理可以使你的游戏变得真正有趣和吸引人!以下是你可以如何在你的游戏中使用物理的概述。

如果你在学校上过物理课,你会发现其中的一些知识适用于 Construct 的物理。我将简要解释基础,如果你以前没有学习过这些概念。对一些理论感兴趣?你可能想阅读 Wikipedia 上关于 牛顿运动定律 的文章。

Construct 中包含了许多物理示例!在启动页面中搜索“物理”以查找它们。它们非常值得一看。在这里的描述可能在你先看到实际操作后会更明白。

如何添加物理

选择你想要添加物理的对象。在属性栏中,点击行为。点击添加新行为,从对话框中选择 物理 行为。全部完成!

我们将任何带有物理行为的对象称为“物理对象”。

重力

默认情况下,物理对象具有重力,使所有对象向下加速。默认重力为 10(记住,在 Construct 中,Y 轴向下增加)。如果你想关闭重力,例如用于太空游戏,可以在任何物理对象上使用设置重力动作。注意:重力适用于整个“世界”。如果你将重力设置为一个对象的 0,则所有对象的重力关闭。

Construct 中的物理:基础教程

制作背景

你不想让游戏的地板在重力太强时从屏幕底部消失!即使在“零重力”游戏中,如果某些东西碰撞到背景物体,背景物体也会稍微被推回,并可能开始旋转。(牛顿第三运动定律:“每一个行动都有一个等效且相反的反应”,这意味着背景物体也会被推回一点。)

在我们的游戏中,我们通常希望模拟背景物体为坚硬的:不会因重力而消失,也不会因碰撞而稍微被推回。启用物理对象的 不可移动属性 来模拟这一点。

Construct 中的物理:基础教程

对象随后被模拟为具有无限质量。它不会移动!

# 注意:物理对象仅与其他物理对象交互。向地板添加固体行为对物理对象没有影响。它们忽略任何不也具有物理行为的对象。物理对象将通过“固体”对象,除非你给它们物理行为并设置为不可移动。

物理行为的其他属性

让我们简要回顾一下物理行为中的其他属性:

碰撞掩模

这设置对象的碰撞形状。默认情况下,它是使用碰撞多边形。如果你打开图像编辑器并点击 碰撞多边形 工具,你可以更改会碰撞的部分。小心不要使用太多点,否则可能会使游戏变慢。

如果设置为边界框或圆形,则忽略图像编辑器中的碰撞多边形。相反,它将使用对象周围的矩形(边界框)或用于滚动对象(如球体)的圆。

防止旋转

如果启用,即使受到斜角打击,对象也不会旋转。这可能在你想自己控制玩家的角度时有用。例如,在平台游戏中,你可能不希望玩家每次尝试奔跑时就摔倒并脸朝下。

密度

密度用于确定对象的质量。质量定义了移动对象的难度。(注意,“重量”并不是确切的术语 – 重量依赖于重力,即使在零重力下,物体仍然具有质量。在零重力下,质量大的物体仍然更难移动。)你的对象的质量由其密度乘以碰撞形状的面积确定。因此,一个非常大的对象比一个小的对象具有更大的质量,即使它们的密度相同。

如果你有一个混凝土块,你希望给它比泡沫块更高的密度!

摩擦

摩擦影响对象在与其他对象滑动时的减速程度。没有摩擦就像在冰上滑冰,高摩擦就像在混凝土上拖动一块砖。在混凝土上拉动砖比在冰上要费力得多。

弹性

弹性(或“弹跳”或“回复”)影响物体的弹跳性。具有高弹性的物体在落在地板上时会弹得很高,而没有弹性的物体根本不会弹跳。

线性阻尼

对象在相同方向以相同速度永远移动,除非受到其他影响。想象一下在太空中扔一个网球 – 它会永远持续下去。(牛顿的第一运动定律:“每个处于匀速运动状态的对象倾向于保持这种状态,除非外部力被施加到它上面”。)在地球上,重力、摩擦和空气阻力往往会使这一点不太明显。

在你的物理游戏中,你可能会发现推一个物体并让它永远持续下去,这符合牛顿的第三定律。你可能想要模拟地板上的摩擦或空气阻力。增加线性阻尼会使物体逐渐减速直到停止。零线性阻尼就像在太空中 – 物体将永远持续下去。

角阻尼

角阻尼与线性阻尼非常相似,但与物体的旋转有关。在太空中,旋转的对象将永远以相同的速度旋转。增加角阻尼会使旋转的对象逐渐减速直到不再旋转。注意,阻尼无论物体移动速度如何都会发生。

子弹

移动非常快的物理对象,如弹丸,可能需要额外的处理以确保其碰撞得到准确处理。启用“子弹”选项将执行额外的工作以确保高速度的碰撞得到适当考虑。你不应该将其用于所有内容,因为这将浪费不必要的处理时间,但如果你注意到非常快的对象出现问题时,这是一个有用的选项。

物理的一般提示

性能

物理模拟非常 CPU 密集。要确保游戏运行快速,避免使用太多物理对象。

请注意,已经完全停止,不再移动或旋转的对象“由模拟器放置睡眠”。然后,它们不再需要处理。如果对象被另一个对象碰撞,它“醒来”并开始再次使用处理。但是,如果对象甚至移动一点点,它就不会被放置到睡眠状态。例如,一个倾斜塔的所有块都将保持清醒。这只是为了性能考虑:如果你有数百个对象在睡眠状态,最多只有 20-30 个在移动(即使只是轻微移动),游戏仍然应该运行良好。

稳定性

物理模拟并不完全稳健。如果你模拟不现实的事情,例如一个巨大的混凝土物体以音速撞击一块泡沫,结果可能也不会是现实的。事实上,任何涉及极端力量的事情都可能导致模拟变得不稳定(导致不现实的结果,例如物体穿过或在彼此内部移动)。

像极重物体堆在轻盒子上的堆叠、巨大的物体堆或非常快移动的重物体往往会导致不稳定。尽量让你游戏中的所有内容保持合理的比例。

同样适用于对象大小。非常小(小于 5 像素)或非常大的对象(超过 500 像素)可能不会模拟得现实。尽量保持所有宽度和高度在 5 -500 像素范围内,并避免极端比例(例如,一个 5 ×500 大小的对象)。

换句话说,物理最适合于大小和质量相近的对象,以相对低的速度相互交互。

手动移动与其他行为

如果你通过事件(例如设置 X、设置 Y)或其它行为(例如添加 8 方向到物理对象)移动对象,物理模拟会尽可能地跟上你的操作。然而,通常更现实的做法是通过向物理对象施加力和冲击来实现相同效果。这使一切“保持在物理世界中”并保持现实。

例如,如果你使用设置位置动作将对象瞬间移动到布局的另一侧,它实际上已经瞬移。这不是一个物理现象,所以结果可能是不现实的。为了跟上,物理行为会注意到这一点,并模拟对象以极快的速度向目的地点移动一个 tick(大约 1 /60 秒)。这是令人难以置信的加速、速度,然后减速。记住,为了保持模拟的稳定,你应该避免极端。

虽然你可以向物理对象添加平台行为,但这两个往往不太兼容。再次,最好通过施加力来实现相同效果。参见 物理 – 滚动平台 示例以了解如何实现这一点。

动画精灵

不要使用带有物理行为的动画精灵。因为动画帧的大小可能不同,每次帧变化 Construct 都需要移除物理对象并将其替换为新对象。这与使用设置位置具有相似的问题,如前所述。

如果你需要使物理对象看起来动画化,使用没有动画的透明精灵进行物理行为,然后在顶部放置一个动画精灵(例如,使用固定行为)。

结论

物理可以使你的游戏变得非常有趣,但不要忘记:避免拥有太多对象,避免极端,尝试仅通过力和冲击移动事物 – 并且了解一些理论不会伤害你!

对基础知识满意了吗?你可能对下一个教程感兴趣:Construct 中的物理:力、冲击、扭矩和关节。

正文完
 0
评论(没有评论)