我有一些构成我游戏背景的单个节点(图块)。它们每个都是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