2013-03-30 28 views
0

本質上,當我有一個CCLayer用於背景和平臺精靈和另一個用於玩家精靈和HUD時,如果我想讓我的相機始終居於玩家的中心位置,應該如何調用CCFollow同一層中的HUD也相應移動?Cocos2d CCFollow當有多個圖層

現在背景圖層是CCLayer的子類,它具有用於在環境中繪製對象的CCSpriteBatchNode。它包含一個實例變量CCLayer *HudLayer,它有一個CCMenu和另一個CCSpriteBatchNode用於播放器動畫精靈。他們都是CCScene的直接子女,意思是HudLayer不是BackgroundLayer的子女。我現在將CCFollow稱爲[self runAction:[CCFollow actionWithTarget:playerSprite worldBoundary:worldRect]],其中selfBackgroundLayer

攝像機正確地跟隨玩家的box2d物理主體,菜單也隨之移動,但是每當攝像機移動時,讓我們說到右側,玩家精靈向右移動兩次,留下它的物理身後。所以在向右移動一下之後,playerSprite就不在屏幕上了。 playerSprite.posplayerSprite.position似乎沒有錯,但。

我試過在不同的地方撥打CCFollow,但是HUD拒絕移動或者相機不動或玩家移動奇怪。它出什麼問題了?

+0

我建議讓玩家精靈和HUD分開。這樣你可以跟蹤精靈的運動,並保持HUD的位置相同。你應該移動每層而不是整個場景。通過這樣做,hud將保持原位 –

+0

謝謝布蘭登!幾個小時前我解決了我的問題,這正是你所說的。我把玩家精靈放在背景圖層上,現在一切正常。我想我需要刷新一些cocos2d基礎知識。 – wc373

+0

我很高興提供幫助 –

回答

0

我發現了!這裏的關鍵是將玩家精靈放在除HUD層以外的某個層中。我添加了我的CCSpriteBatchNode作爲backgroundLayer而不是HudLayer而不改變其他任何東西,它的工作,玩家精靈的CCSpriteBatchNode。因此,基本上所有需要始終停留在屏幕上的事物都應該位於一個圖層中,而目標節點CCFollow應該位於單獨的圖層中(在我的情況下爲背景)。 CCFollow的調用者層應該包含目標節點作爲直接子節點。本教程對我有很大幫助:http://www.raywenderlich.com/4666/how-to-create-a-hud-layer-with-cocos2d