SKTexture获取图像名称

问题描述 投票:3回答:3

是否可以从SKSpriteNode的SKTexture获取当前图像名称?

我是SpriteKit的新手,我正在写一个小游戏。我需要检测忍者何时击中敌人。像这样的东西

“在这里输入的图像描述” “在此处输入图片说明”

我正在做SKAction之类的>>

- (void)setUpHit
{
    SKTextureAtlas *hitAtlas = [SKTextureAtlas atlasNamed:@"Ninja_hit"];

    SKTexture *hit1 = [hitAtlas textureNamed:@"Ninja_hit_1"];
    SKTexture *hit2 = [hitAtlas textureNamed:@"Ninja_hit_2"];
    SKTexture *hit3 = [hitAtlas textureNamed:@"Ninja_hit_3"];
    SKTexture *hit4 = [hitAtlas textureNamed:@"Ninja_hit_4"];

    SKAction *hitAnimation = [SKAction animateWithTextures:@[hit1, hit2, hit3, hit4]
                                              timePerFrame:0.1];

    SKAction *wait = [SKAction waitForDuration:0.3];

    SKAction *goBack = [SKAction animateWithTextures:@[hit1, [SKTexture textureWithImageNamed:@"Ninja"]]
                                        timePerFrame:0.1];

    self.hitAction = [SKAction sequence:@[hitAnimation, wait, goBack]];
}

但是点击仅在图片Ninja_hit_2.png或Ninja_hit_3.png上有效。

所以当我与敌人进行相交节点忍者时,我需要检测当前的纹理图像名称。

现在我正在做类似的事情

if ([ninja intersectsNode:node] &&  !self.isKilled)
{
    SKTexture *currentTexture = [ninja texture];

    if ([self isHit:currentTexture])
    {
        //kill enemy here
    }  
}

where

- (BOOL)isHit:(SKTexture *)texture
{
    NSString *description = [texture description];
    NSRange range = [description rangeOfString:@"'"];
    NSString *textureName = [description substringFromIndex:NSMaxRange(range)];
    range = [textureName rangeOfString:@"'"];
    textureName = [textureName substringToIndex:NSMaxRange(range) - 1];

    if ([textureName isEqualToString:@"Ninja_hit_2.png"] ||
        [textureName isEqualToString:@"Ninja_hit_3.png"])
    {
        return YES;
    }

    return NO;
}

我知道这是不正确的,但是我找不到如何获取当前纹理名称或正确执行它的方法。你可以帮帮我吗?

是否可以从SKSpriteNode的SKTexture获取当前图像名称?我是SpriteKit的新手,正在写一个小游戏。我需要检测忍者何时击中敌人。像这样的东西...

ios sprite-kit skspritenode sktexture
3个回答
2
投票

嗯,我的策略是这样:


2
投票

从SKAtlas动画中检测当前名称,这不是最好的方法,但对我有用。


0
投票

查看SKSpriteNode的纹理描述,您应该能够看到图像的名称

© www.soinside.com 2019 - 2024. All rights reserved.