Is there possible to get current image name from SKTexture from SKSpriteNode?
I am a new in SpriteKit and I'm writing a little game. I need to detect when ninja will hit enemy. Something like this
I am doing SKAction like
- (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]];
}
But hit is going only on images Ninja_hit_2.png or Ninja_hit_3.png.
So I need to detect current texture image name when i am doing intersectsNode ninja with enemy.
Now I am doing something like
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;
}
I know that is not correct, but I can't find how to take current texture name or doing it correctly. Could you help me?