如何比较SKSpriteNode的纹理

3
我正在使用Sprite Kit制作游戏。当发生碰撞时,我想检索SKSpriteNode的图像,以根据怪物的图像分配不同的点值。我认为比较SKSpriteNode的texture属性可以起到作用。我尝试了以下代码,但我的if语句从未被调用。有什么建议吗?
- (void)projectile:(SKSpriteNode *)projectile didCollideWithMonster:(SKSpriteNode *)monster {
        SKTexture *tex = [SKTexture textureWithImageNamed:@"img.png"];
        if ([[monster texture] isEqual:tex])
        {
            NSLog(@"it works");
        }
}

为什么不使用userData属性或name属性? - AndrewShmig
那么,请告诉我们您想要实现什么。您的SKSpriteNode是否运行任何动画,或者它具有静态纹理,您想要检查并执行某些操作? - AndrewShmig
我正在快速创建SKSpriteNodes,它们会在屏幕上移动,并在调用碰撞方法时被移除。当我对SKSpriteNode执行[monster description]操作时,唯一一致的属性是SKTexture,所以我希望在碰撞后比较每个怪物的SKTexture。 - MSU_Bulldog
很高兴能帮助到你! - AndrewShmig
@AndrewShmig请回答这个问题,以便正式接受。 - ZeMoon
显示剩余8条评论
1个回答

3

是的,使用UIImage可以比较两个图像/纹理。

- (BOOL)image:(UIImage *)image1 isEqualTo:(UIImage *)image2
{
    NSData *data1 = UIImagePNGRepresentation(image1);
    NSData *data2 = UIImagePNGRepresentation(image2);

    return [data1 isEqual:data2];
}

1
小伙子,你在Habr上翻译CoreData的书吗?非常感谢你的辛勤工作! :) 我正在阅读呢。 - Andrey Gordeev
1
@AndreyGordeev,是我 :)。虽然我还没有完成,但我计划在完成学业后尽快完成。 - AndrewShmig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接