我有一个长矩形图像,它以不同的角度旋转。然而,矩形图像的框架不随图像一起旋转,而是旋转使框架变得更大以适合旋转的图像。因此,当我使用CGRectIntersectsRect时,碰撞检测完全关闭,因为与矩形图像碰撞的另一个图像在到达rect图像的可见区域之前将发生碰撞。 如果您真的不知道我在说什么,请查看ascii绘图:
普通矩形图像帧,O - >像素,|, - - >帧
|----------|
|OOOOOOOOOO|
|----------|
旋转后
|----------|
|O |
| O |
| O |
| O |
| O |
| O |
| O |
| O |
| O |
|----------|
我已经阅读了一些碰撞文章,但他们所有人都在讨论与普通直线矩形的碰撞,而我真正想要的是与倾斜图像的碰撞,最好是像素碰撞检测。 TIA提出的任何建议。
答案 0 :(得分:1)
如果您使用的是Mac,则可以使用-[NSImage hitTestRect:withImageDestinationRect:context:hints:flipped:]
来确定特定矩形是否与图像中的非透明像素相交。请参阅标题注释以了解用法。
答案 1 :(得分:0)
您无法使用frame
的{{1}}属性对旋转的对象进行碰撞,因为UIView
在您开始转换视图后不再有效。您需要提出一些自定义解决方案。究竟是什么取决于许多事情,尤其是表现。
您可以为图像创建几何碰撞包络,您可以将其与图像一起旋转。或者您可以使用像素完美的碰撞检测结合简单的边界检查,以避免在可能的情况下进行昂贵的像素检查。并且,如果你真的想要获得幻想,你可以使用一些全功能的物理模拟器,例如Box2D。
如果您需要更好的建议,请提供更多详细信息。您多久需要检查一次碰撞?一旦?每秒40次?