GameMaker Studio物理对象精确碰撞

时间:2016-06-02 22:21:55

标签: physics game-physics game-maker collision

GameMaker Studio中的物理对象是否可以使用精确碰撞?

这是我的问题的一些背景。我正在制作一个海盗游戏,玩家可以在拥有众多岛屿的大海上航行。我一直在使用物理引擎来控制船的运动,而且效果很好。然而,当试图在船和各个岛之间引入碰撞时会出现问题。据我所知,基础物理装置只能形成相当简单的形状。具体来说,碰撞形状编辑器限制为12个点,并且仅限于凸形。这是一个问题,因为我的许多岛屿都是相对复杂的非凸形状,并不一定是单件。如果能够将岛精灵用作精确的碰撞掩模,那将非常好,对于非基于物理的物体也是如此。

有没有办法做到这一点,或者我可能缺少的解决办法?这是我的一个岛屿的例子: enter image description here

2 个答案:

答案 0 :(得分:2)

我可以看到两个问题的解决方案。

1 - 最简单,但性能不友好。

在精灵编辑器中,单击“修改蒙版”。应该有一个“精确碰撞检查”框,你可以打勾。这意味着您的精灵将逐个像素地检查碰撞。你可以猜到,这不是性能友好的,但会完全符合你的要求。

2 - 我建议的那个。

你可以做的只是通过背景或通过专用物体绘制岛屿精灵,然后创建一些看不见的简单形状对象(矩形,圆形和菱形),并将它们放在你的岛屿上在房间编辑器中。 (不要忘记你可以伸展它们。)

这些简单形状的物体将是检查碰撞的物体。 我使用这种技术在我的一个游戏中为复杂形状的云制作一个hitbox,所以我知道它有效。

我相信你向我们展示的岛屿可以很好地覆盖一些椭圆形和一个长矩形。

奖励:以图形方式执行此操作后,您可以将形状的创建代码从房间创建事件复制到岛屿创建事件,以重复多个相同的岛屿。只是不要忘记位置/角度偏移!

答案 1 :(得分:0)

通过在定义碰撞形状时使用Shape选项,您可以将任何类型的凸面多边形作为碰撞形状。例如:

您选择“形状”选项的位置为红色。

选择该选项后,您只需点击&拖动以将顶点添加/编辑到多边形。请记住,它必须是凸多边形,GameMaker对此非常严格。您也可以通过右键单击它们来删除顶点。