【问题标题】:small sprite touch小精灵触摸
【发布时间】:2010-05-18 14:41:55
【问题描述】:

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

【问题讨论】:

  • 嗯,可能需要用户使用笔尖细的触控笔,而不是胖乎乎的大手指?

标签: iphone cocos2d-iphone multi-touch


【解决方案1】:

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

...如果你比较用户的 实体接触点 位置,只需选择 最接近的一个(无论是否 距离是 35 或 36 像素)?

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

【讨论】:

  • 这是一个很好的方法,不仅因为它允许您触摸小精灵,而且它是一种在小区域内消除多个小精灵的歧义的方式(即选择最近的一个)。你可能仍然想限制你看的距离;在您的应用中选择 250 像素外的精灵会感觉很奇怪。
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多