Изменение образа SKSprite на SKShapeNode

Набор спрайтов, Xcode.

Мне нужно найти способ изменить изображение спрайта в самой программе. Я знаю, как создавать файлы jpg и превращать их в изображение спрайта...

Но для этой программы мне нужно рисовать круги/многоугольники (которые могут меняться внутри программы) с помощью SKShapeNode, а затем переносить это на изображение SKSpriteNode.

Допустим, я заявил:

SKSpriteNode *sprite;
SKShapeNode *image;

Как бы я сделал это с этими переменными?

Спасибо!

РЕДАКТИРОВАТЬ: я имею в виду текстуру, когда говорю изображение.


person Community    schedule 13.05.2015    source источник


Ответы (2)


Если я правильно понимаю ваш вопрос, вы можете добиться того, что вы, после использования метода textureFromNode на SKView.

В вашем 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];
}

Надеюсь, это поможет!

person ABakerSmith    schedule 13.05.2015
comment
Теперь проблема в том, что я, кажется, использую не тот язык, что и ты... Я никогда не видел слова "позволить"? Использование SKSpriteKit, Xcode... Это быстро? Я новичок в Xcode, кстати, так что, пожалуйста, скажите мне, если я ошибаюсь ^^ - person ; 14.05.2015
comment
Я обновил свой ответ :) Прошло некоторое время с тех пор, как я написал какой-либо Objective-C! - person ABakerSmith; 14.05.2015
comment
Есть ли другой способ сделать это? В моей новой программе мне нужно напрямую изменить текстуру в уже существующем спрайте, скажем, с треугольника на круг. Спасибо - person ; 06.06.2015

Вы не можете изменить изображение SKSpriteNode после его назначения. Чтобы сделать то, что вы хотите, вам нужно создать SKSpriteNode, используя текстуру.

- (instancetype)initWithTexture:(SKTexture *)texture

Чтобы изменить текстуру SKSpriteNode, вы назначаете новую текстуру, используя ее свойство текстуры. Вы также можете сделать это, используя изображение, преобразованное в текстуру следующим образом:

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

Что касается SKShapeNode, вы не можете назначить изображение. Только путь, прямоугольник, круг, эллипс или точки. Посмотрите раздел документации класса SKShapeNode Создание контура формы для получения дополнительной информации.

person sangony    schedule 13.05.2015
comment
Нет... Я имел в виду, что хочу назначить SKShapeNode изображению SKSpriteNode. Итак, sprite.texture = SKShapeNode. Когда я говорю об изображении в вопросе, я действительно имел в виду текстуру, извините. - person ; 13.05.2015
comment
@MasterShuriken - Насколько мне известно, это невозможно. - person sangony; 13.05.2015