Unity - 了解碰撞

Unity 中的碰撞与实际的 Sprite 本身是分开的,作为单独的组件附加并自行计算。现在让我们了解这背后的原因。

游戏中的一切都是游戏对象。甚至构成关卡的单个图块本身也是游戏对象。

当我们将每个组件视为游戏对象时,我们意识到场景中可能会有数千个游戏对象,它们以某种方式相互作用。你可以想象,如果 Unity 为每个游戏对象添加碰撞,那么引擎为每个游戏对象计算碰撞是不切实际的。

我们将继续添加一个简单的"墙",我们的玩家角色可以与之碰撞。为此,创建另一个精灵并使用 Rect 工具将其放大。我们还将通过 Sprite Renderer 组件中的 Color 属性为其赋予红色。

Color Property

现在,转到 Inspector 中的 Add Component,然后输入"Box Collider 2D"。单击出现的第一个组件,将出现一个新组件。

Add Component

您将在 GameObject 的周边看到一条亮绿色的线。这是碰撞边界。它定义了可碰撞对象的实际形状

对我们的可移动 GameObject 重复相同的操作。

当然,Unity 中的碰撞不仅限于简单的盒子。它们可以有各种形状和大小,并且不一定是对象参数的副本。

Box Shaped

它们也可以采用多边形。

polygonal shapes

开发人员和设计人员在碰撞边界中使用近似形状来简化碰撞器并避免引擎进行不必要的计算,这种情况并不罕见。我们将很快学习如何使用碰撞器创建不同的形状和大小。

现在我们已经设置好了碰撞边界,点击播放并查看实际效果。

Approximate Shapes

您会注意到我们的可移动物体行为不正常。我们将在后续章节中讨论该物体的行为。