我正在尝试制作一个侧滚动背景游戏,其中滚动会随着时间的推移而增加。 我目前正试图通过拥有2个背景精灵来实现这一目标,一个适合整个屏幕,另一个适合它。我安排这些背景的移动向左移动X位置的变量随着时间的推移而增加(加速),一旦任何背景精灵离开屏幕,我再次将它们替换在屏幕旁边。
这是代码
- (void) scrollBackground:(ccTime) dT {
bg1.position = ccp(bg1.position.x - movingSpeed/2*dT, size.height/2);
bg2.position = ccp(bg2.position.x - movingSpeed/2*dT, size.height/2);
if (bg1.position.x <= -size.width/2) {
bg1.position = ccp(size.width + size.width/2, size.height/2);
} else if (bg2.position.x <= -size.width/2) {
bg2.position = ccp(size.width + size.width/2, size.height/2);
}
问题在于,一旦速度增加,精灵之间会出现间隙,并且随着时间的推移会变大。有办法解决这个问题吗?
提前致谢
答案 0 :(得分:2)
说实话我不确定是什么原因导致你的问题,但是我发现你的背景精灵都是相对于屏幕......你可能会尝试让你的背景精灵相对于彼此...也许这会修复你的问题。你可以这样做:
- (void) scrollBackground:(ccTime) dT {
bg1.position = ccp(bg1.position.x - movingSpeed/2*dT, size.height/2);
bg2.position = ccp(bg2.position.x - movingSpeed/2*dT, size.height/2);
if (bg1.position.x <= -size.width/2) {
bg1.position = ccp(bg2.position.x + size.width, size.height/2);
} else if (bg2.position.x <= -size.width/2) {
bg2.position = ccp(bg1.position.x + size.width, size.height/2);
}
.....
}
我希望这对你有用