我有一个使用 UiKit 动态实现的简单游戏。游戏中有块(红色的)与网格对齐,如下图所示。块从顶部落下并停留在底部网格中
假设使用参考 1 调用底部网格行,我想检查块在哪个网格参考中。我通过使用 CGGeomentry、CGRectContainsPoint([grid frame] 来执行此操作,然后将网格编号即 1 分配给块。如上图所示,它适用于单个块。
现在看第二张图。
一旦第二个块堆叠在第一个块的顶部,您会注意到网格第 2 行和第二个块之间的间隙。一旦有更多的块堆叠在一起,这个间隙就会增加。由于这个间隙,CGRectContainsPoint 计算为超过 6 的网格行给出了错误的网格数。
换句话说,第一个块应该分配网格第 1 行,第二个块应该分配网格第 2 行。由于块的帧大小和网格帧大小相同,因此对于块 10 或块 100 应该是正确的。但是因为这个间隙,经过一些街区后,网格分配看起来不对,即街区 6 将网格编号设为 5。
我正在使用 UIKit 动力学重力行为来使块从顶部掉落,并使用碰撞行为来确定碰撞。我什至将弹性属性设置为 0.0 以降低弹性。
我的问题是为什么当网格框架大小和块框架大小相同时我会得到这个许可。他们不应该完全适合吗?我怎样才能摆脱这个许可?
当更多的块堆叠在下面的图片中时,你可以看到间隙越来越大
谢谢