0

嘿,我想知道是否有办法将当前分配的帧的名称告诉特定的精灵。我想做的是有一个类似于的 if 语句

if(CGRectIntersectsRect([Player1 boundingBox], [Player2 boundingBox] && Player1.frame == Player2.frame){
    //Do something
}else if(CGRectIntersectsRect([Player1 boundingBox], [Player2 boundingBox] && Player1.frame != Player2.frame{
    //Do something else
}

不幸的是,我不知道这样做的正确方法是什么。我可以得到当前精灵帧的实际名称吗?IE。@"Frame1.png" 所以我可以将它与它与帧名称冲突的精灵进行比较?也很抱歉,如果我按帧使用错误的术语,我的意思是像精灵表中的精灵图像,即。spriteWithSpriteFrameName。

4

2 回答 2

0

我不确定它是否是 CCSprite 上的属性,您必须检查文档,但一个简单的解决方案是使用继承和子类 CCSprite。

添加您想要的属性,例如 imageName 属性,更改您的 CCSprite 分配以使用新的子类精灵,然后您将能够访问该属性。不要忘记进口。

此外,您应该使用CGRectEqualToRect ( CGRect rect1, CGRect rect2 );来检查是否相等。根据您的精灵,您可能需要正确的碰撞检测来避免 CGRect 方法不会做的透明碰撞检测。

希望这可以帮助。

于 2013-08-04T04:12:31.900 回答
0
CCSpriteFrame* frame = sprite.displayFrame;
NSString* frameName = frame.textureFilename;

我不确定这是否会返回单个框架名称。如果它只返回图集纹理文件名,那么你就不走运了。您必须修改 CCSpriteFrame 代码以包含框架名称属性。

于 2013-08-04T07:29:16.133 回答