2015-10-24 50 views
0

我正在C++中使用cocos2d-x v3做平臺遊戲,其中地圖通常非常大,可見屏幕通過地圖跟隨對象。如何添加始終在Cocos2d屏幕上的精靈?

比方說,我想要在屏幕的右上角顯示一個精靈,即使屏幕跟在對象後面,它也會在這個位置。

使用對象位置不這樣做。

有沒有辦法在屏幕上顯示精靈或任何東西,即使屏幕在移動,它也會出現在屏幕上?

Ps。我在遊戲開發的超級小白

回答

0

我已經設法使用視差節點,並使用精靈進入Vec2(0,0)的速度,這樣它總是保持在屏幕上的相同位置。

+0

這是一個非常完整的方式。這裏有內置的功能。但是,如果它適合你,這很好:)當你開始優化其他平臺時,請記住另一個選項。 –

0

,因爲它是書面here,您使用對子級convertToWorldSpace

convertToWorldSpace轉換的節點COORDS屏幕coordinates.convertToWorldSpace總是返回我們精靈的屏幕位置,可能會很如果你想捕捉精靈上的水龍頭,但需要移動/縮放圖層,這很有用。 一般情況下,父節點調用此方法的子節點的位置,作爲結果返回世界的孩子的位置。這似乎並沒有什麼意義調用此方法,如果來電者是不是父...

所以,你可以閱讀,

Point point = node1->convertToWorldSpace(node2->getPosition()); 

上面的代碼將在節點2的座標轉換爲屏幕上的座標。 例如,如果node1的錨點位置是node1的左下角,但不一定在屏幕上。這會將節點2的位置轉換爲點相對於節點1的屏幕座標)。

或者如果您願意,您可以使用功能convertToWorldSpaceAR獲取相對於場景定位點的位置。

0

所以有一些假設必須作出回答這個問題。我假設您在包含地圖的圖層上使用了Follow操作。例如,檢查here。例如:

// If your playerNode is the node you want to follow, pass it to the create function. 
auto cameraFollowAction = Follow:create(playerNode); 
// running the action on the layer that has the game/map on it 
mapLayer->runAction(cameraFollowAction); 

上面的代碼將導致視口「移動」到玩家處於世界位置的位置。因此,跟隨地圖上比當前視口大的玩家。我爲我的遊戲菜單/ hud所做的是將Hud添加到不同的圖層並將其添加到主遊戲場景的根目錄。沒有後續動作的場景正在運行。像下面的東西。

// Hud inherits from layer and has all the elements you need on it. 
auto inGameHud = HudLayer::create(); 
// Add the map/game layer to the root of main game scene 
this->addChild(mapLayer, 0); 
// Add the hud to the root layer 
this->addChild(inGameHud, 1); 

上面的代碼假設'this'是您的MainGameScene。這限制了Follow操作從屏幕上滾動元素。無論您的場景目前位於世界空間的哪個位置,您的元素都將出現在屏幕上。

讓我知道這是否足夠清楚。如果您遇到困難,我可以幫助您。

0

您總是可以將該精靈放入其他所有節點/圖層中。這樣移動這個圖層/節點不會移動精靈

相關問題