有些游戏有一些小图片作为精灵,可以通过触摸移动。如果精灵是一个更大的图片,触摸很正常。我们可以使用函数CGRectContainsPoint
检查精灵。但是当精灵很小的时候,这个功能看起来不太好。有其他方法可以解决这个问题吗?
答案 0 :(得分:1)
我写了一篇关于你可以用来缓解@FrustratedWithFormsDesigner描述的“胖手指”问题的方法:
http://codecube.net/2010/03/approximating-touch-points/
...如果你比较用户的话怎么办? 触摸实体的点 位置,只需选择 最近的一个(不管是否 它距离35或36像素?)
该帖子是用C#编写的Windows手机,但这个概念应该适用。基本上,在用户的触摸和屏幕上的实体之间进行距离比较。使触摸按距离操纵最近的一个,你可以远离严格定义的方块来检测触摸。
答案 1 :(得分:0)
您可以在精灵周围的边距内进行触摸。例如如果触摸在精灵的10个像素范围内,则将其视为触摸精灵。
这样做的一种方法是在调用CGRectContainsPoint
之前扩展精灵的矩形。对于x和y,以下代码将矩形扩展10:
CGRect expanded = CGRectInset(spriteRect, -10.0, -10.0);
另一种方法是在触摸周围创建一个矩形并使用CGRectIntersectsRect
检查触摸矩形是否与精灵重叠。