swift - 如何为拖放拼图构建对齐网格功能?
问题描述
我正在玩构建一种俄罗斯方块/1010!SpriteKit 和 Swift 风格的益智游戏。我希望游戏向用户呈现一个由几个块组成的拼图。然后,用户可以将拼图块拖放到网格上。如果用户在网格上选择的区域有空位,拼图块将捕捉到最近的插槽并占据它们。
我不确定如何实现这个问题的“拼图到网格”部分。关于我如何从高层次的角度处理这个问题的任何建议?下面的图片以获取更多上下文。
提前感谢您的帮助。
解决方案
由于您已经创建了这两个对象,您可以检查它们的中心并将其与行的中心进行比较,并将其与最接近的对象进行匹配,例如:
假设您可能拥有的每行之间有 100 个像素
第 1 行的中心 = (100, 100)
row2 的中心 = (100, 200)
第 3 行的中心 = (100, 300)
您可以轻松计算每行的中心,因为您有它们的中心点
在 touches end 函数中,您将块的中心点与每个中心点进行比较并处理以下情况:
- 从块的中心获取最近的 3 行中心
检查该中心是否为空,如果是,则通过制作
block.center = row[i].center
- 如果不是,则匹配到下一个最近的行
- 如果没有行是空的,那么你应该终止游戏
无论块在屏幕上的哪个位置,这项工作都有效,因为您拥有两个对象的完整信息
推荐阅读
- java - 如何在不跳过其他步骤的情况下手动失败 Serenity bdd 中的步骤
- java - 休眠:在保存无效的 ltree 列时捕获异常
- powershell - 计划任务中的 Send-MailMessage 编码错误
- google-maps - 我试图渲染一千多个标记但它崩溃了..有人可以帮助我吗?
- javascript - 更改 javascript 显示/隐藏文本功能
- c# - 如何使用 c# 从 selenium 中的给定 IwebElement 获取相对 xpath?
- c# - 在 c# 中添加证书 ocsp 权限信息访问和策略扩展
- excel - 一个单元格等于 IF 语句中存在的多个数字,excel
- string - 禁用特定列的自动增量
- c# - 将结构映射注册表添加到 Microsoft.Azure.Functions.Extensions.DependencyInjection