2014-04-07 42 views
1

我希望能夠在我的遊戲中「縮放」出來,但是當我縮放父「世界」SKNode時,關節不會相應地縮放,因爲它們必須被添加到SKScene(它是根節點)。無法縮放/縮放附帶SKPhysicsJoints的SKSpriteNode

更改SKScene的大小,但是隨着兒童的規模一起變化,所有HUD圖形都會隨之變化。

我已經考慮創建我的HUD作爲SKView的孩子,但它似乎違背了Apple推薦的內容。我也失去了使用SKScene轉換的好處,並最終處理了許多ViewControllers。

有關如何縮放SKSpriteNode並將其關節縮放的任何建議?

回答

2

在世界節點上模擬放大/縮小的最安全方法是對其進行縮放。但是,正如您已經注意到的那樣,縮放世界節點會打破物理模擬,因爲您正在有效移動和縮放SKScene中的所有內容。所以,如果您將世界節點縮放到0.5以模擬縮小,您會注意到重力具有2倍的效果,並且事情下降更快。

解決方案是在物理模擬完成之前,始終將世界比例設置爲1.0,然後在渲染之前將其更改回您想要查看的內容。

我正在做這沒有任何副作用的工作方式是這樣做的-didEvaluateActions和-didSimulatePhysics回調,像這樣:

-didEvaluateActions 
{ 
    [myWorld setScale:1.0]; // must be 1.0 before physics! 
} 

-didSimulatePhysics 
{ 
    [myWorld setScale:worldScale]; // now set correctly for rendering 
}