Unity - 理解碰撞


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

游戏中的所有内容都是 GameObject。即使构成关卡的各个图块本身也是游戏对象。

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

我们将继续添加一个简单的“墙”,我们的玩家角色可以与它发生碰撞。为此,请创建另一个精灵并使用矩形工具将其放大。我们还将通过Sprite Renderer 组件中的Color属性为其指定红色。

颜色属性

现在,转到检查器中的“添加组件”,然后输入“Box Collider 2D”。单击显示的第一个组件,就会出现一个新组件。

添加组件

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

对我们的可移动游戏对象也重复相同的操作。

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

盒状

它们也可以呈现多边形形状。

多边形形状

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

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

近似形状

您会注意到我们的可移动对象表现不正常。我们将在后续章节中讨论该对象的Behave。