关于Objective C:将SKSprite的图像更改为SKShapeNode

Changing the image of a SKSprite to an SKShapeNode

Sprite Kit,Xcode。

我需要找到一种方法来更改程序本身内的sprite图像。我知道如何创建jpg文件并使它们成为sprite图像...

但是对于这个程序,我需要使用SKShapeNode绘制圆/多边形(在程序内部可能会改变),然后将其转移到SKSpriteNode的图像上。

假设我已经声明:

1
2
SKSpriteNode *sprite;
SKShapeNode *image;

我如何使用这些变量?

谢谢!

编辑:当我说图像时,我的意思是纹理。


如果我正确理解了您的问题,那么在SKView上使用textureFromNode方法后,您可以实现目标。

在您的SKScene中:

1
2
3
4
5
6
7
8
9
10
11
-(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];
}

希望有帮助!


分配一个SKSpriteNode图像后,您将无法再对其进行更改。要执行所需的操作,需要使用纹理创建一个SKSpriteNode。

1
- (instancetype)initWithTexture:(SKTexture *)texture

要更改SKSpriteNode的纹理,请使用其texture属性分配一个新纹理。您也可以使用将图像转换为如下纹理的方式来执行此操作:

1
myNode.texture = [SKTexture textureWithImageNamed:@"imageName"];

对于SKShapeNode,您无法分配图像。仅路径,矩形,圆形,椭圆形或点。请查看SKShapeNode类文档部分的创建形状路径以获取更多信息。