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