0

我使用以下代码块,当我调试时,我看到 SKShapeNode 的累积帧现在{{-160.03586, -42.431793}, {470.03586, 519.50903}}不是{{0,0}, {100,300}}.

如果我把这整个粒子代码注释掉,accumulatedFrame就又有意义了。

我需要它有意义,因为我nodesAtPointtouchesBegan. 任何无意义的值也会导致nodesAtPoint找到不相关的节点,因为累积帧现在对所有人来说都很奇怪,而且它们都相交......

我使用以下代码块,但我找不到问题所在。我在这里想念什么?

NSString *path = [[NSBundle mainBundle] pathForResource:@"MyParticle" ofType:@"sks"];
SKEmitterNode *particles = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

particles.position = CGPointMake(_selectedNode.frame.size.width/2, _selectedNode.frame.size.height/2);

[particles runAction:[SKAction sequence:@[[SKAction waitForDuration:.2],
                                        [SKAction fadeAlphaTo:0 duration:0.2],
                                        [SKAction removeFromParent]]] completion:^{
                                [particles removeFromParent];
}];
[_selectedNode addChild:particles];
4

1 回答 1

3

accumulatedFrame 听起来像,它是包含节点的所有图形对象的最小矩形。发射器节点实际上会将节点添加到它添加到的对象中。它在计算累积帧时完全按照预期工作。

解决这个问题的方法是让发射器节点有一个“目标节点”。SKEmitterNode 有一个名为 .targetNode 的属性。这基本上意味着它将其精灵放入该节点。

我发现拥有一个包含我所有发出的节点的单个 SKNode 是一种很好的方法。然后,这与我单击的图层分开。

有关 targetNode 的更多信息,请查看 SKEmitterNode 类参考。

SKEmitter 节点类参考

于 2014-07-11T17:41:23.490 回答