SpriteKit SKEmitternode Targetnode изменяет весь узел

Привет, я делаю игру SpriteKit, основанную на объектах EmitterNode. Я разработал стартовую сцену и добавил несколько эмиттернодов. Я также заставил их двигаться по экрану. Теперь я хотел бы, чтобы они оставили «шаблон» на очень короткое время. Как я видел в видео «IOS 7 Tech Talks: 2d Game With sprite kit», я изменил целевой узел на себя:

Emitternode.targetNode = self;

Я хочу то же самое со своими узлами, которые разработчик использовал в видео. Однако эта строка изменяет мой узел, делает его больше и намного быстрее. Прикреплю несколько скриншотов. Вот код, я создаю Emitternodes следующим образом:

 SKEmitterNode *Emitternode = [NSKeyedUnarchiver unarchiveObjectWithFile:pathtoadd];
 Emitternode.position = CGPointMake(arc4random_uniform(Scene.size.width-40)+20, arc4random_uniform(Scene.size.height-60)+20);
 [Emitternode setScale:0.3f];
 Emitternode.targetNode = self;
 [self addChild:Emitternode];

Мои снимки экрана: ЭТО без параметра targetnode: введите здесь описание изображенияЭТО С параметром targetnode: введите здесь описание изображения

Как видите, во втором случае они намного больше. Я хотел бы иметь такой же размер, но с опцией targetnode. Есть идеи?


person user3341586    schedule 05.04.2014    source источник


Ответы (1)


Как я вижу, вы установили масштаб узла-эмиттера на 0,3. Это означает, что все его дочерние узлы (частицы) также масштабируются до 0,3. С targetNode = self созданные частицы больше не являются дочерними элементами SKEmitterNode, а являются потомками узла, который представлен «я» (вашей сценой). Если ваша сцена имеет масштаб по умолчанию 1.0, то масштаб частиц также будет 1.0.

Изменение размера эмиттера с помощью редактора частиц, а не программно, размер останется.

person Nino    schedule 05.04.2014
comment
Спасибо, это правда, но если я изменю размер масштаба в sks, он будет выглядеть совсем иначе, что мне и нужно. Поэтому я не буду использовать целевое свойство :(. - person user3341586; 05.04.2014