【发布时间】:2010-05-18 14:41:55
【问题描述】:
有些游戏有一些小图片作为精灵,可以触摸移动。如果精灵是较大的图片,触摸是很正常的。我们可以使用函数CGRectContainsPoint检查精灵。但是当精灵很小,这个功能看起来不太好。有没有其他方法可以解决这个问题?
【问题讨论】:
-
嗯,可能需要用户使用笔尖细的触控笔,而不是胖乎乎的大手指?
标签: iphone cocos2d-iphone multi-touch
有些游戏有一些小图片作为精灵,可以触摸移动。如果精灵是较大的图片,触摸是很正常的。我们可以使用函数CGRectContainsPoint检查精灵。但是当精灵很小,这个功能看起来不太好。有没有其他方法可以解决这个问题?
【问题讨论】:
标签: iphone cocos2d-iphone multi-touch
我写了一个方法,您可以用它来缓解@FrustratedWithFormsDesigner 描述的“胖手指”问题:
http://codecube.net/2010/03/approximating-touch-points/
...如果你比较用户的 实体接触点 位置,只需选择 最接近的一个(无论是否 距离是 35 或 36 像素)?
这篇文章是用 C# 为 windows phone 编写的,但这个概念应该适用。基本上,在用户的触摸和屏幕上的实体之间进行距离比较。让触摸按距离操纵最近的触摸,这样您就可以避免使用严格定义的正方形来检测触摸的问题。
【讨论】:
您可以允许在精灵周围的空白处进行触摸。例如如果触摸在精灵的 10 像素范围内,则将其视为触摸精灵。
这样做的一种方法是在调用CGRectContainsPoint 之前扩展精灵的矩形。以下代码将为 x 和 y 将矩形扩展 10:
CGRect expanded = CGRectInset(spriteRect, -10.0, -10.0);
另一种方法是在触摸周围创建一个矩形并使用CGRectIntersectsRect 检查触摸矩形是否与精灵重叠。
【讨论】: