Cocos2d iphone Cocos2d iphone中的CCRenderTexture大小和位置

Cocos2d iphone Cocos2d iphone中的CCRenderTexture大小和位置,cocos2d-iphone,collision-detection,Cocos2d Iphone,Collision Detection,我正试图使用CCRenderTexture进行像素级的碰撞检测,如本论坛帖子所述: 代码“按原样”工作,我已将其与我的项目集成 但我在做讨论的其他一些事情时遇到了困难: 如果我创建的renderTexture的大小小于屏幕大小,则碰撞检测无法正常工作-当精灵靠近时,它似乎会显示碰撞(在调用draw或visit之前,需要将要绘制的精灵移动到renderTexture的区域中。移动renderTexture不会更改_rt.sprite的位置 相交矩形必须位于渲染器的区域中,否则会发生不准确的碰撞

我正试图使用CCRenderTexture进行像素级的碰撞检测,如本论坛帖子所述:

代码“按原样”工作,我已将其与我的项目集成

但我在做讨论的其他一些事情时遇到了困难:
如果我创建的renderTexture的大小小于屏幕大小,则碰撞检测无法正常工作-当精灵靠近时,它似乎会显示碰撞(在调用draw或visit之前,需要将要绘制的精灵移动到renderTexture的区域中。移动renderTexture不会更改_rt.sprite的位置

相交矩形必须位于渲染器的区域中,否则会发生不准确的碰撞

看来你不能改变精灵的位置

我使用的解决方案是确定相交框的原点(x,y),并将两个碰撞的精灵偏移那么多。这将确保相交矩形的原点为0,0。然后我再次计算相交矩形(在确保相交矩形的原点为0,0后)。然后我按照论坛帖子中的说明进行操作

在确定渲染纹理的尺寸时,我确保它们至少与相交矩形一样大,并且我确保相交矩形完全位于渲染纹理内部。这样会产生精确的碰撞。如果相交框的一部分位于渲染纹理外部,我会得到不准确的碰撞,因此在绘制到渲染纹理中之前,请确保移动要访问的精灵,以便相交框完全位于渲染纹理中


请记住在完成后将精灵移回。:/p>在调用draw或visit之前,需要将要绘制的精灵移动到渲染器的区域中。移动渲染器不会更改_rt.sprite的位置

相交矩形必须位于渲染器的区域中,否则会发生不准确的碰撞

看来你不能改变精灵的位置

我使用的解决方案是确定相交框的原点(x,y),并将两个碰撞的精灵偏移那么多。这将确保相交矩形的原点为0,0。然后我再次计算相交矩形(在确保相交矩形的原点为0,0后)。然后我按照论坛帖子中的说明进行操作

在确定渲染纹理的尺寸时,我确保它们至少与相交矩形一样大,并且我确保相交矩形完全位于渲染纹理内部。这样会产生精确的碰撞。如果相交框的一部分位于渲染纹理外部,我会得到不准确的碰撞,因此在绘制到渲染纹理中之前,请确保移动要访问的精灵,以便相交框完全位于渲染纹理中


请记住在完成后将精灵移回。:)

请注意,您所关心的纹理存在于
\r.sprite
中。因此,任何锚定点计算都应该应用于渲染器中的精灵,而不是渲染器本身(其大小为(0,0))我不做任何锚定点计算_rt.sprite就是我所说的-位置始终为0,0注意:如果没有任何精灵旋转,您可以使用我的CCRenderTexture教程中描述的更快的像素完美碰撞代码:注意,您关心的纹理存在于
\u rt.sprite
中。因此,任何锚定点计算都应该应用于渲染器中的精灵,而不是渲染器本身(其大小为(0,0))我不做任何锚定点计算_我说的是rt.sprite-位置始终为0,0注意:如果没有旋转任何精灵,则可以使用我的CCRenderTexture教程中描述的更快的像素完美碰撞代码:
    CCRenderTexture* _rt = [CCRenderTexture renderTextureWithWidth:winSize.width height:winSize.height];

    _rt.position = CGPointMake(winSize.width*0.5f, winSize.height*0.5f);
    [[RIGameScene sharedGameScene]addChild:_rt];
    _rt.visible = YES;