是不是经常我们当我们想实现一个背景循环移动时,总是出现一些莫名其妙的bug?这。。。这怎么会出现一条缝呀!
实际上是我们漏了一个非常细节的问题:那就是当一个背景超越某个位置时,我们会把它重置回开始处,这时其实这个细节问题就来了!假设我们要求背景的x<=-1920时就将其改为1920,但是可能前一帧我还是-1915,后一帧就变成了-1925,此时由于-1925<=-1920所以我们会把它放到1920处,但是这时它背后跟着的背景此时却在5处(正常来说应该在0处!!!),因此背景之间产生了重叠!如果继续,这就导致后来的缝隙的出现。
解决方法:在将前一个背景置为1920时也要将后一个背景置为0。
private void move()
{
float finalSpeed = speed * Time.deltaTime * 60f;
//移动背景
q.localPosition -= new Vector3(finalSpeed, 0, 0);
p.localPosition -= new Vector3(finalSpeed, 0, 0);
//重置背景
if (q.localPosition.x <= -2340)
{
q.localPosition = new Vector3(2340f, 0, 0);
p.localPosition = new Vector3(0, 0, 0);
}
if (p.localPosition.x <= -2340)
{
p.localPosition = new Vector3(2340f, 0, 0);
q.localPosition = new Vector3(0, 0, 0);
}
}