首页 > 解决方案 > 如何为拖放拼图构建对齐网格功能?

问题描述

我正在玩构建一种俄罗斯方块/1010!SpriteKit 和 Swift 风格的益智游戏。我希望游戏向用户呈现一个由几个块组成的拼图。然后,用户可以将拼图块拖放到网格上。如果用户在网格上选择的区域有空位,拼图块将捕捉到最近的插槽并占据它们。

我不确定如何实现这个问题的“拼图到网格”部分。关于我如何从高层次的角度处理这个问题的任何建议?下面的图片以获取更多上下文。

提前感谢您的帮助。

瓷砖

标签: swiftsprite-kitgame-development

解决方案


由于您已经创建了这两个对象,您可以检查它们的中心并将其与行的中心进行比较,并将其与最接近的对象进行匹配,例如:

假设您可能拥有的每行之间有 100 个像素

第 1 行的中心 = (100, 100)

row2 的中心 = (100, 200)

第 3 行的中心 = (100, 300)

您可以轻松计算每行的中心,因为您有它们的中心点

在 touches end 函数中,您将块的中心点与每个中心点进行比较并处理以下情况:

  • 从块的中心获取最近的 3 行中心
  • 检查该中心是否为空,如果是,则通过制作

    block.center = row[i].center

  • 如果不是,则匹配到下一个最近的行
  • 如果没有行是空的,那么你应该终止游戏

无论块在屏幕上的哪个位置,这项工作都有效,因为您拥有两个对象的完整信息


推荐阅读