我使用以下代码块,当我调试时,我看到 SKShapeNode 的累积帧现在是 {{-160.03586, -42.431793}, {470.03586, 519.50903}}
而不是 {{0,0}, {100,300}}
.
如果我注释掉整个粒子代码,accumulatedFrame
又有意义了。
我需要它有意义,因为我在 touchesBegan
中使用 nodesAtPoint
。任何无意义的值都会导致 nodesAtPoint
也找到不相关的节点,因为 accumulatedFrame 现在对所有人来说都很奇怪而且它们都相交......
我使用了下面的代码块,但我找不到问题所在。我在这里想念什么?
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];
最佳答案
accumulatedFrame 顾名思义,它是包含节点所有图形对象的最小矩形。发射器节点实际上会将节点添加到它所添加到的对象中。它在计算累积帧时完全按预期工作。
解决这个问题的方法是让发射器节点有一个“目标节点”。 SKEmitterNode 有一个名为 .targetNode 的属性。它基本上意味着它将其 Sprite 放入该节点。
我发现拥有一个包含我所有发射节点的单个 SKNode 是一种很好的方法。然后将其与我单击的图层分开。
查看 SKEmitterNode 类引用以获取有关 targetNode 的更多信息。
关于ios - 为什么 SKEmitterNode 会破坏累积的帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24702661/