Cocoa touch 如何识别非规则精灵图像的触感?

Cocoa touch 如何识别非规则精灵图像的触感?,cocoa-touch,iphone-sdk-3.0,cocos2d-iphone,Cocoa Touch,Iphone Sdk 3.0,Cocos2d Iphone,我有一个精灵,如果它被触摸,触摸应该被识别。我是用坐标来做的。我获取了精灵图像的坐标(minx,miny,max x,max y)。但精灵图像不是矩形。因此,即使我触摸精灵外部和矩形边界内部的坐标,精灵也会被识别。 但对于我的应用程序,我只需要识别精灵。所以,我必须只取精灵的坐标,但它不是规则形状。我正在我的程序中使用CCSprite 那么,对于只选择精灵,我可以做些什么?该使用哪些类? 谢谢。您可以尝试以下方法之一 创建小于精灵图像绝对范围的边界框。是的,它会比雪碧小。这将消除死区点击检测的

我有一个精灵,如果它被触摸,触摸应该被识别。我是用坐标来做的。我获取了精灵图像的坐标(minx,miny,max x,max y)。但精灵图像不是矩形。因此,即使我触摸精灵外部和矩形边界内部的坐标,精灵也会被识别。 但对于我的应用程序,我只需要识别精灵。所以,我必须只取精灵的坐标,但它不是规则形状。我正在我的程序中使用CCSprite

那么,对于只选择精灵,我可以做些什么?该使用哪些类?
谢谢。

您可以尝试以下方法之一

  • 创建小于精灵图像绝对范围的边界框。是的,它会比雪碧小。这将消除死区点击检测的精灵-取舍是你的精灵的一部分,看不到可选择的

  • 使用圆形边界区域检测用户是否单击了精灵。在我的第一个建议中,你会再次遇到死区问题,但是球体可能会在精灵上给你一些更好的覆盖区域,从而在触摸检测上给你更好的结果


这是物理碰撞检测系统中的一个标准问题,通常使用圆或矩形作为碰撞体。我会选择一个小于精灵大小的圆形或矩形作为边界区域。比生成边界区域多边形更精细的细节。不过,这会带来一大堆新问题和担忧。

我现在正在构建一个Cocos2D游戏,我要做的是首先通过我的精灵,查看触摸击中的精灵(它们在我的应用程序中重叠)

然后,对于每个精灵命中,我使用[sprite convertTouchToNodeSpace]获取精灵内部的X,Y坐标,我可以使用该坐标(尽管Y轴翻转)引用我创建精灵时使用的CGImage

如果触摸点处的像素是“清晰”的,即alpha 0,则精灵没有真正被触摸,我按z顺序检查下一个精灵,以查看其触摸的位置是否有颜色

有时我认为我应该使用双色遮罩图像来处理每个精灵,而不是精灵图像。但是,我是先生,让它工作,然后让它快

我意识到这不是超高效的,但我没有太多的精灵,我这样做只是为了触摸