Ios 检测触摸精灵和convertToNodeSpaceAR

Ios 检测触摸精灵和convertToNodeSpaceAR,ios,cocos2d-iphone,Ios,Cocos2d Iphone,我真的很难找到像探测精灵触摸这样简单的东西来工作。。。有人能帮忙吗?我正在尝试创建一个方法作为CCSprite的一个类别,如果点在sprite中,给定的点或触摸将返回YES,如果不在sprite中,则返回NO 目前,当精灵不是Zwoptex ie中裁剪纹理的一部分时,我有一个实现似乎可以工作。用于精灵的图像没有修剪 CGPoint point = [touch locationInView:[touch view]]; point = [[CCDirector sharedDirector] c

我真的很难找到像探测精灵触摸这样简单的东西来工作。。。有人能帮忙吗?我正在尝试创建一个方法作为CCSprite的一个类别,如果点在sprite中,给定的点或触摸将返回YES,如果不在sprite中,则返回NO

目前,当精灵不是Zwoptex ie中裁剪纹理的一部分时,我有一个实现似乎可以工作。用于精灵的图像没有修剪

CGPoint point = [touch locationInView:[touch view]];
point = [[CCDirector sharedDirector] convertToGL: point];
CGRect spriteRect = self.textureRect;
spriteRect.origin = ccpAdd(ccpSub(self.positionInPixels, self.anchorPointInPixels), self.offsetPositionInPixels);
return CGRectContainsPoint(spriteRect, point);    
但我发现,如果在原始纹理中修剪精灵,则此操作不起作用。这种变化似乎起到了作用

CGRect spriteRect = self.textureRect;
spriteRect.origin = ccpAdd(self.offsetPositionInPixels, self.positionInPixels);
return CGRectContainsPoint(spriteRect, [self convertTouchToNodeSpaceAR:touch]);    
但现在我有另一组来自帧缓存的精灵,它们似乎不喜欢这样!它们被修剪了,我看不出与上面代码中使用的精灵有什么区别。有人能解释一下convertTouchToNodeSpaceAR的意思吗?我确信问题在于我的无知,在Cocos2d框架中有一种常见的优雅方式来实现这一点。

问题可能是CGRectContainsPoint;。我有一段时间也有同样的问题,我怀疑rect和我们比较的点并没有转化为同一个点系统,从而产生负面结果

解决方案:

制定一种方法/定义,可以正确地在彼此之间转换点系统。 我所做的:创建一个网格类,跟踪网格上的精灵位置,并将触摸转换为网格上的点。 选项1可能更符合您的需要,但我需要经常参考精灵彼此的相对位置,所以对我来说是有意义的


如果您想选择选项1,我建议您获取一些NSLog并打印出rect的一个点和您要比较的点,并找出它们的不同之处。

您好,我很想选择选项1,但不确定我的精灵使用的是什么点系统,以及哪些系统可用。我只是对convertToNodeSpace方法的功能感到非常困惑。。。