gpt4 book ai didi

ios - 在 cocos2d Sprite 中访问纹理的矩形

转载 作者:行者123 更新时间:2023-11-28 22:22:44 27 4
gpt4 key购买 nike

我有 CCSprite,它(出于我将在此处掩盖的原因)在其边缘周围有一些填充。我正在从 sprite 表创建 sprite,并且它是连续动画的。在这里,我添加了一个半透明的蓝色 Sprite 来显示 Sprite 的 contentSize。我还打开了 CC_SPRITE_DEBUG_DRAW 以便在(两个) Sprite 周围绘制边框:

enter image description here

因此,蓝色框表示 CCSpriteboundingBox/contentSize 属性。质地。这是正确的、所需的功能。

但是...如您所见,CC_SPRITE_DEBUG_DRAW 能够识别绘制纹理的实际边缘。我想访问实际的“绘制区域”(例如,作为 CGRect)。换句话说:我希望能够检测用户是否触摸了单元,而不是简单地触摸了蓝色框 (boundingBox)。

如何访问此 CGRect

最佳答案

查看调试绘制代码我发现了这个:

#if CC_SPRITE_DEBUG_DRAW == 1
// draw bounding box
CGPoint vertices[4]={
ccp(_quad.tl.vertices.x,_quad.tl.vertices.y),
ccp(_quad.bl.vertices.x,_quad.bl.vertices.y),
ccp(_quad.br.vertices.x,_quad.br.vertices.y),
ccp(_quad.tr.vertices.x,_quad.tr.vertices.y),
};
ccDrawPoly(vertices, 4, YES);
#elif CC_SPRITE_DEBUG_DRAW == 2
// draw texture box
CGSize s = self.textureRect.size;
CGPoint offsetPix = self.offsetPosition;
CGPoint vertices[4] = {
ccp(offsetPix.x,offsetPix.y), ccp(offsetPix.x+s.width,offsetPix.y),
ccp(offsetPix.x+s.width,offsetPix.y+s.height),
ccp(offsetPix.x,offsetPix.y+s.height)
};
ccDrawPoly(vertices, 4, YES);
#endif // CC_SPRITE_DEBUG_DRAW

看起来你可以从 Sprite 的 quad 属性中得到你想要的东西。或者可能是第二种解决方案,因为我不知道cocos2d在这里的边界框和纹理框是什么意思。

关于ios - 在 cocos2d Sprite 中访问纹理的矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19883427/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com