我有一些構成我遊戲背景的單個節點(圖塊)。它們每個都是32x32p,並且彼此相鄰以形成地板/屋頂/障礙物。我從JSON文件加載映射,並在場景初始化時根據JSON文件的內容將節點放置在背景層/節點上。SpriteKit - 節點調整位置一點點
這工作正常,但是,當移動背景層/物理引擎正在做它的事情時,我遇到了一些錯誤。一些節點相互移動1點/像素,從而在它們之間產生間隙。由於背景顏色不同,這看起來非常糟糕。
這個問題大多發生在地圖上(不是馬上),與此同時,我向玩家施加衝動或物理引擎彈跳玩家(或類似物)。
下面是說明我的問題一個畫面:
(Click to open in separate tab)
正如你所看到的,Ø和d在節點之間的權利,還有一定的差距(更容易在鏈接中的全尺寸圖像中可見)。玩這款遊戲的時候會出現很多類似的空白,而且只會出現一兩秒鐘。有時他們停下來,當玩家停止移動。
我通過增加/減少x-value
來移動播放器didSimulatePhysics
。然後最後在didSimulatePhysics
我調用這個方法來對玩家居中worldNode
:
- (void)centerViewOn:(CGPoint)centerOn {
CGFloat x = Clamp(centerOn.x, self.size.width/2, _bgLayer.layerSize.width - self.size.width/2);
_worldNode.position = CGPointMake(-x, _worldNode.position.y);
}
的worldNode
同時包含其中包含了所有的個人背景節點,播放器本身的bgLayer
。
解決此問題的最佳方法是什麼?一個合理的解決方案可能是製作每個瓦片33x32p,因此它們重疊。在那種情況下,你不會看到現在和未來的差距。但我認爲最好「殺死」問題而不是隱藏問題。 任何人都有經驗來佈置他們的地圖嗎?或者有沒有人遇到同樣的問題?如果是這樣,你是如何解決它的?
在此先感謝!
最好的方法是確保位置是在像素邊界,即鑄造姿勢爲int – LearnCocos2D
@ LearnCocos2D我會怎麼做呢? – Aleksander
哈哈,我現在明白了。非常感謝!這一直在擾亂我的方式來! – Aleksander