Search code examples
objective-csprite-kitskspritenodeskshapenode

Changing the image of a SKSprite to an SKShapeNode


Sprite Kit, Xcode.

I need to find a way to change a sprites image within the program itself. I know how to create jpg files and make them into the sprite image...

But for this program, I need to draw circles/polygons (which may change inside the program) using SKShapeNode, and then transferring this to the SKSpriteNode's image.

Let's say I have declared:

SKSpriteNode *sprite;
SKShapeNode *image;

How would I do this with these variables?

Thanks!

EDIT: I mean texture when I say image.


Solution

  • If I understand your question correctly, you can achieve what you're after using the textureFromNode method on SKView.

    In your SKScene:

    -(void)didMoveToView:(SKView *)view {
        SKShapeNode *shape = [SKShapeNode shapeNodeWithCircleOfRadius:100];
        shape.fillColor = [UIColor blueColor];
        shape.position  = CGPointMake(self.size.width * 0.25, self.size.height * 0.5);
        [self addChild:shape];
    
        SKTexture *shapeTexture = [view textureFromNode:shape];
        SKSpriteNode* sprite = [SKSpriteNode spriteNodeWithTexture: shapeTexture];
        sprite.position = CGPointMake(self.size.width * 0.75, self.size.height * 0.5);
        [self addChild:sprite];
    }
    

    Hope that helps!