构造中的物理学:基础知识

535次阅读
没有评论

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

构造中的物理学:基础知识

本教程是 Construct 团队推荐的!这意味着它包含有用的、高质量的信息,将帮助您成长为一名游戏开发人员。
Construct 包括由 Box2D 物理引擎提供支持的物理行为。这使您可以让物体随着现实世界的物理特性移动。点击这里打开一个演示看看它模拟的物理类型。物理可以使您的游戏真正有趣和引人入胜!以下是如何让物理在游戏中发挥作用的概述。

如果你曾经在学校上过物理课,你会发现你学到的一些东西适用于 Construct 的物理学。如果您以前没有学习过这些概念,我仍然会简要解释基础知识。对一些理论感兴趣吗?您可能想阅读维基百科的文章牛顿运动定律.

Construct 附带了许多物理示例!在起始页中搜索 Physics 以找到它们。它们非常值得一看。如果您首先在行动中看到它,那么这里的描述可能会更有意义。

如何添加物理特性

选择要添加物理特性的对象。在“属性栏”中,单击“行为”。单击“添加新行为”,然后从对话框中选择“物理”行为。全部完成!

我们将任何添加了物理行为的对象称为“物理对象”。

重力

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

构造中的物理学:基础知识

制作风景

你不希望你的游戏地板也会因为重力而从屏幕底部掉下来!即使在“零重力”游戏中,如果有东西与它发生碰撞,一块风景也会被稍微推回,并可能开始旋转。(牛顿第三运动定律:“每个动作都有一个相等且相反的反应”,这意味着风景也被推回了一点。

在我们的游戏中,大多数时候,我们都希望模拟的风景坚如磐石:不会因重力而掉落,也不会被撞击它的东西推回去一点。启用物理对象的 Immovable 属性来模拟此情况。

构造中的物理学:基础知识
然后对物体进行模拟,就好像它具有无限的质量一样。它不会去任何地方!

注意:物理对象仅与其他物理对象交互。将实体行为添加到地板上对物理对象没有影响。他们忽略了任何没有物理行为的东西。物理对象将直接穿过“固体”对象,除非您赋予它们物理行为并将它们设置为不可移动。

其他物理属性

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

碰撞面罩

这将设置对象的碰撞形状。默认情况下,它使用碰撞多边形。如果打开图像编辑器并单击碰撞面工具,则可以更改将发生碰撞的位。注意不要使用太多的分数,否则可能会减慢游戏速度。

如果设置为边界框或圆,则将忽略图像编辑器中的碰撞多边形。取而代之的是,它将在对象周围使用矩形(边界框),或者使用一个圆圈,这对于滚动球等对象很有用。

防止旋转

如果启用,即使以掠视角度撞击,物体也永远不会旋转。如果您想自己控制播放器的角度,这可能很有用。例如,在平台游戏中,您可能不希望您的玩家每次尝试奔跑时都被绊倒并摔倒在他们的脸上。

密度

密度用于确定物体的质量。质量定义了物体移动的难度。(请注意,“重量”并不是完全正确的术语 – 重量取决于重力,而物体在零重力下仍然具有质量。质量大的物体在零重力下仍然更难移动。物体的质量由其密度乘以其碰撞形状的面积确定。因此,一个非常大的物体比一个小物体的质量要大得多,即使它们的密度相同。

如果你有一块混凝土块,你会想给它比泡沫块高得多的密度!

摩擦

摩擦力会影响物体因滑向另一个物体而减慢的速度。没有摩擦就像在冰上滑冰,高摩擦就像在混凝土上拖着一块砖头。在混凝土上拉砖比在冰上拉砖更难。

弹性

弹性(或“弹跳”或“恢复原状”)会影响物体的弹力。弹性高的物体掉到地板上会弹得很高,而没有弹性的物体根本不会弹跳。

线性阻尼

物体永远以相同的速度向相同的方向移动,除非有其他东西影响它们。想想把网球扔进太空——它永远消失了。(牛顿第一运动定律:“除非施加外力,否则处于匀速运动状态的每个物体都倾向于保持这种运动状态”。在地球上,重力、摩擦力和空气阻力等力往往会使这种情况不那么明显。

在你的物理游戏中,你可能会发现你推动了一个物体,并且根据牛顿第三定律,它永远持续下去。您可能想要模拟一些与地板的摩擦或空气阻力。增加线性阻尼会使物体自身逐渐减速,最终停止。零线性阻尼就像在太空中一样 – 物体将永远存在。

角阻尼

角阻尼是一个与线性阻尼非常相似的概念,但与物体的旋转有关。同样,在太空中,一个旋转的物体将永远以相同的速度旋转。增加角阻尼将使旋转的物体逐渐减慢速度,直到它不再旋转。请注意,无论物体移动的速度有多快,都会发生阻尼。

子弹

移动非常快速的物理对象(例如弹丸)可能需要额外的处理,以确保其碰撞得到准确处理。启用 Bullet 选项将执行额外的工作,以确保碰撞正确考虑高速。您不应该在所有事情上都使用它,因为它会不必要地浪费处理时间,但如果您注意到非常快的对象存在问题,这是一个有用的选项。

一般物理提示

性能

物理模拟非常占用 CPU 资源。可能需要大量的处理才能做出正确的运动。为确保您的游戏运行速度快,请避免使用过多的物理对象。

请注意,完全停止,并且根本没有移动或旋转的物体会被模拟“休眠”。然后,他们就不再需要处理了。如果物体被另一个物体击中,它会“醒来”并再次开始使用处理。但是,如果物体有丝毫的移动,它就不会被休眠。例如,摇摇欲坠的塔楼中的所有块都将保持清醒状态。对于性能来说,记住这一点是有用的:如果你有数百个物体处于休眠状态,并且最多只有 20-30 个移动(即使是轻微的),游戏应该仍然运行良好。

稳定性

物理模拟并不完全鲁棒。如果你模拟不切实际的事物,比如一个巨大的混凝土物体以音速撞击泡沫块,结果也可能不真实。事实上,任何涉及极端力的东西都可能导致模拟变得不稳定(导致不切实际的结果,例如物体相互穿过或内部移动)。

像堆在一堆非常轻的盒子上的非常重的物体、大量的物体或非常快速移动的重物等东西往往会导致不稳定。尽量将游戏中的所有内容保持在合理的比例。

这同样适用于对象大小。非常小(小于 5 像素)或非常大(超过 500 像素)的对象也可能无法真实地模拟。尽量将所有宽度和高度保持在 5-500 像素范围内,并且仍然避免极端比例(例如,5×500 大小的物体)。

换句话说,物理学在以相对较低的速度相互作用的物体上效果最好。

手动移动和其他行为

如果您通过事件(例如设置 X、设置 Y)或其他行为(例如,向物理对象添加 8 个方向)移动对象,则物理模拟将尽最大努力跟上您所做的操作。然而,通过对物理对象施加力和脉冲来实现同样的事情通常更现实。这使一切都保持了“物理世界中”的事物和真实性。

例如,如果您使用“设置位置”操作立即将对象移动到布局的另一侧,则该对象已有效地传送。这不是一个现实的物理现象,所以结果也可能是不现实的。为了跟上步伐,物理行为将发现这一点,并模拟物体突然以极快的速度向目标点移动一刻(约 1/60 秒)。这是一个令人难以置信的加速度,速度,然后是减速。请记住,为了保持模拟的稳定性,您应该避免极端情况。

尽管您可以将 Platform 行为添加到 Physics 对象中,但两者往往不能很好地相处。同样,最好通过施加力来实现同样的事情。请参阅物理 – 滚动平台游戏示例演示了如何实现此目的。

动画精灵

不要在物理行为中使用动画精灵。由于动画帧的大小可能不同,因此每次帧发生变化时,Construct 都必须删除物理对象并在其位置传送一个新对象。如前所述,这与使用“设置位置”存在类似的问题。

如果需要使物理对象看起来是动画的,请使用不带动画的不可见精灵来执行物理行为,然后将动画精灵放置在顶部(例如,使用 Pin 行为)。

结论

在你的游戏里玩物理真的很有趣,但别忘了:避免有太多的物体,避免极端,尝试仅靠力和冲动来移动物体 – 了解一些理论并没有什么坏处!

对基本功能感到满意吗?您可能对下一个教程感兴趣:构造中的物理学:力、脉冲、扭矩和关节.

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