我正在嘗試使用Apple的SpriteKit進行側滾動遊戲。當想要製作無盡的滾動背景時,我碰到了這個answer。SpriteKit中無盡的滾動背景
實施該解決方案後,似乎工作雖然它顯着降低我的FPS。這可能是由於圖像位置正在每幀重新計算。
我覺得如果我可以使用一個或多個SKAction
調用來照顧這個動畫,但我不確定如何實現它會好得多。
想法?
我已經在我的場景類到目前爲止,該代碼(這僅動畫在屏幕上的背景一次雖然)
- (void)addBackgroundTileAtPoint:(CGPoint)point {
SKSpriteNode *bg = [SKSpriteNode spriteNodeWithImageNamed:@"background"];
bg.anchorPoint = CGPointZero;
bg.position = point;
bg.name = @"background";
bg.zPosition = -99;
[self addChild:bg];
SKAction *sequence = [SKAction sequence:@[
[SKAction moveByX:-(bg.size.width * 2) y:0 duration:10],
[SKAction removeFromParent]
]];
[bg runAction: sequence];
}
除非滾動是恆定的,否則動作對你不會有任何好處:相同速度的相同方向。即使那樣,我懷疑行動將比答案的實施更快。雖然它可能會更快,但如果不是enumerateByName,則只需引用兩個背景精靈,以便SK不需要按名稱搜索節點圖。 – LearnCocos2D
您需要在這裏*遞歸調用序列。即在[SKAction removeFromParent]之後,添加[self addBackgroundTileAtPoint:] ;,或者您應該使用重複動作而不從超級視圖中移除背景 –
@ LearnCocos2D如果行動不是要走的路,那麼您是否對優化其他答案有任何建議解決方案還是您有不同的解決方案。當在仿真器上運行該答案的解決方案時,FPS立即從60降至〜30。 –