我使用下面的代碼塊,當我調試時,我看到SKShapeNode的累積幀現在是{{-160.03586, -42.431793}, {470.03586, 519.50903}}
而不是像{{0,0}, {100,300}}
。爲什麼SKEmitterNode中斷累積幀?
如果我註釋掉這個整個粒子代碼,accumulatedFrame
又是有意義的。
我需要它是有意義的,因爲我在touchesBegan
中使用nodesAtPoint
。任何無意義的值導致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];
我接着說:particles.targetNode = _selectedNode;''之前[_selectedNode的addChild:顆粒]'現在它不會破壞'accumulatedFrame'計算和我的'touchesBegan'正常工作。但我仍然很好奇爲什麼targetNode = nil會導致不正確的計算。我調試了它,父節點中沒有剩下「children」,所以它應該已經正確地計算出它了。 'targetNode = nil'打破它的父節點的累計幀計算? – frankish
我發現,這次它打破了一些其他節點和touchesBegan無法正常工作,以確定觸摸對象,同時發射器仍然活着。 – frankish
目標節點是發射器將放置其粒子的地方。您應該將它們添加到不同的圖層中。我完全遠離你的節點。 SKEmitterNode被放置在一個節點中,它的位置在哪裏。但是在哪裏掉落它的粒子是由targetNode設置的。 –