2010-05-18 95 views
2

有一些游戏有一些小图片作为精灵,可以通过触摸移动。如果精灵是一个较大的图片,触摸是非常正常的。我们可以使用函数CGRectContainsPoint检查精灵。但当精灵很小时,这个函数看起来不太好。还有其他方法可以解决这个问题吗?小精灵触摸

+0

嗯,可能需要用户使用手写笔,而不是一个大胖乎乎的手指,而不是一个精美的尖端? – FrustratedWithFormsDesigner 2010-05-18 14:44:55

回答

1

我写了一个办法,你可以使用,以减轻其@FrustratedWithFormsDesigner描述的“胖手指”的问题:
http://codecube.net/2010/03/approximating-touch-points/

...如果你比较一下用户的 触摸点对实体 的头寸和简单地选择 最接近的一个(无论是否 它是35或36像素)?

这篇文章是用C#编写的windows phone,但这个概念应该适用。基本上,在用户的触摸和屏幕上的实体之间进行距离比较。使触摸按距离操纵最近的那个,并且避免使用刚性定义的正方形来检测触摸。

+0

这是一个很好的方法,不仅因为它可以让你触摸小精灵,而且它可以在一个小区域内对几个小精灵进行消歧(即选择最接近的小精灵)。你仍然可能想要限制你看起来的距离;选择一个距离250像素的精灵会让你的应用感到奇怪。 – 2010-07-13 18:50:22

0

您可以允许在精灵周围的空白处进行触控。例如如果触摸位于精灵的10个像素内,请将其视为正在触摸精灵。

这样做的一种方法是在调用CGRectContainsPoint之前展开精灵的矩形。下面的代码将通过10 x和y扩大矩形:

CGRect expanded = CGRectInset(spriteRect, -10.0, -10.0); 

这样做是创建一个围绕触摸一个矩形,并使用CGRectIntersectsRect检查触摸RECT与精灵重叠的另一种方式。