2013-10-23 56 views
0

我有一个UIImageview包含一个圆圈(障碍),然后另一个UIImageview包含另一个图像(我的角色)。当我的圈子击中我的角色时,游戏结束。UIimageview适合圆形

我的问题发生在游戏结束时碰到我的圆圈内的UIImageview框,而不是UIImageview框内的圆圈。

我能想到的解决方案是:

  • 请取整到我的圈子UIImageview
  • 以某种方式检测我的人物像素和圆圈像素之间的碰撞,而不是UIImageviews

帮助和想法将非常感激。我是一个xcode的初学者。

谢谢!

+0

圆的计算交叉位置。如果它的顶部,底部,左侧,右侧与中央角色死亡,并且如果它在左上角,右上角,左下角,右下角,则角色不会死亡。人物似乎在跳跃在圆形物体上方。 –

+0

你可以延续这个,所以我可以试试看吗? – Phil

回答

6

夫妇不同的技术:

1)的UIView#layer.cornerRadius - 实现超级简单,只需设置一个属性。但对于诸如表格视图之类的滚动元素来说真的很糟糕。

2)UIImageView作为一个面具 - 也很容易实现。基本上用中间的一个透明圆形制作一个正方形图像,并用新的UIImageView将它放在视图顶部。如果你的圆形设计有一些反射或造型,这可能会让你的生活更轻松。

3)自定义绘图 - 制作UIView子类并覆盖drawRect以绘制图像并将其裁剪为圆形路径。

希望有帮助!

编辑:

你可以阅读这个答案。

1)Fill an UIBezierPath with a UIImage

2)iOS: Inverse UIBezierPath (bezierPathWithOvalInRect)

3)How to mask a square image into an image with round corners in the iPhone SDK?

+0

感谢您的帮助。我是否需要导入才能使用UIView#layer.cornerRadius?我也会这样实现它: ** circle.layer.cornerRadius = 10; ** ** circle.layer.masksToBounds = YES; ** – Phil

+0

是的,您必须导入QuartzCore框架,只要使用必须使用CALayers和核心动画。你可以在这个链接上找到关于图层的很棒的教程:-http://www.raywenderlich.com/2502/calayers-tutorial-for-ios-introduction-to-calayers-tutorial – Bhavesh

+0

阅读你发布的指南后以前(我在某种程度上阅读和理解)我发现很难将图层的想法与我之前在屏幕上移动圆圈的代码结合起来。“** circle.center = CGPointMake(circle.center.x - 9,circle.center.y); **”。我是否需要完全重写我的移动代码以适应新的图层? – Phil