【问题标题】:How to compare SKSpriteNode textures如何比较 SKSpriteNode 纹理
【发布时间】:2014-04-21 16:14:40
【问题描述】:

我正在使用 Sprite Kit 制作游戏。当发生碰撞时,我想检索我的弹丸与之碰撞的 SKSpriteNode 的图像,以根据怪物的图像分配不同的点值。我认为比较 SKSpriteNode 的纹理属性可以工作。我尝试了以下代码,但从未调用过我的 if 语句。有什么建议吗?

- (void)projectile:(SKSpriteNode *)projectile didCollideWithMonster:(SKSpriteNode *)monster {
        SKTexture *tex = [SKTexture textureWithImageNamed:@"img.png"];
        if ([[monster texture] isEqual:tex])
        {
            NSLog(@"it works");
        }
}

【问题讨论】:

  • 为什么不使用 userData 属性或 name 属性?
  • 我特别想要名为“monster”的 SKSpriteNode 的图像
  • 为什么不给不同的怪物起不同的名字呢?我认为比较两个图像/纹理非常耗时。
  • 我尝试使用 monster.name = @"monster1" 来初始化怪物,但在 if 语句中比较名称时仍然没有结果。
  • 然后呢?请告诉我们您想要达到的目标。您的 SKSpriteNode 是否运行任何动画,或者它具有您想要检查并执行某些操作的静态纹理?

标签: objective-c ios7 sprite-kit skspritenode sktexture


【解决方案1】:

是的,有一种方法可以使用 UIImage 比较两个图像/纹理。

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

    return [data1 isEqual:data2];
}

【讨论】:

  • Парень, это ты переводил книгу про CoreData на Хабре? Респект тебе огромный за твой труд! :) Как раз сейчас читаю
  • @AndreyGordeev, я :) не закончил правда, но планирую закончить, как только учебу завершу。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 2019-10-11
相关资源
最近更新 更多