2

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

4

2 回答 2

1

我写了一种方法,您可以使用它来缓解@FrustratedWithFormsDesigner 描述的“胖手指”问题:http:
//codecube.net/2010/03/approximating-touch-points/

...如果您将用户的触摸点与实体位置进行比较,然后简单地选择最接近的一个(不管它是 35 像素还是 36 像素),会怎样?

这篇文章是用 C# 为 windows phone 编写的,但这个概念应该适用。基本上,在用户的触摸和屏幕上的实体之间进行距离比较。让触摸按距离操纵最近的触摸,这样您就可以避免使用严格定义的正方形来检测触摸的问题。

于 2010-05-18T14:52:39.130 回答
0

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

一种方法是在调用之前扩展精灵的矩形CGRectContainsPoint。以下代码将为 x 和 y 将矩形扩展 10:

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

另一种方法是在触摸周围创建一个矩形并用于CGRectIntersectsRect检查触摸矩形是否与精灵重叠。

于 2010-05-18T14:57:12.293 回答