Могу ли я в любом случае анимировать дочерний узел независимо от его родителя?
Например
//create parent node
SKNode* parent = [SKSpriteNode spriteNodeWithColor:[UIColor whiteColor] size:CGSizeMake(100,100)];
[myScene addChild:parent];
//create child node (add to parent)
SKNode* child = [SKSpriteNode spriteNodeWithColor:[UIColor whiteColor] size:CGSizeMake(50,50)];
child.position = CGPointMake(0,0);
[parent addChild:child];
//attempt to run action on child
[child runAction:[SKAction moveByX:25 y:25 duration:1.0f]];
Ничего не произошло. Однако, если я запускаю одно и то же действие для родителя, оно работает так, как ожидалось.
Как я могу запустить действие на дочерних узлах независимо от родителя? Это должно быть возможно (например, взмах крыльев у птицы, вращение шин на автомобиле, выпуск шасси самолета и т. д.).
Если это ограничение набора спрайтов, можете ли вы порекомендовать другой фреймворк игрового движка, который не имеет этих ограничений?
ЕДИНСТВЕННЫЙ способ, которым я могу изменить положение узла, - это добавить его непосредственно в сцену. Дочерние узлы не могут быть перемещены. Это огромное ограничение в этой структуре. Очень разочаровывает наверняка.
ОБНОВИТЬ:
Я обнаружил, что если я удалю физическое тело (child.physicsBody = nil), я могу изменить положение (child.position = newPosition), но я не могу запустить действие, которое изменяет положение ([child runAction: [SKAction moveByX:25 y: 25 продолжительность: 1.0f]).
Спасибо!!
SKNode
иSKSpriteNode
и 2) отсутствуете ] в ваших вызовах методаUIColor
. SpriteKit полностью поддерживает выполнение действий на дочерних узлах. Ваш родительский узел является дочерним элементом сцены. - person 0x141E   schedule 15.12.2014SKSpriteNode
SKNode
? Если вы это сделаете, у вас не будет доступа к свойствам спрайтов, таким какsize
иtexture
. Кстати, я проверил ваш код, и он работает. Дочерний узел перемещается из центра в правый верхний угол своего родителя. - person 0x141E   schedule 16.12.2014