视差背景的滚动比例和循环边界怎样配合:四层背景的十次循环滚动·实例24
多层背景可以按不同于镜头的速度移动,营造层次感。重复纹理还需要处理循环边界,否则镜头走过一个纹理宽度时可能出现跳变或空白。
下面把一个游戏界面或模拟规则拆成可复查的记录。每组输入独立给出,先确认单位、先后次序和边界,再核对结果。它不依赖具体游戏的隐藏参数,读者可以直接挑选几步手工复算。
输入与规则
一维镜头位置按给定记录变化,四层背景各有初始偏移和滚动比例。未折回位置为初始偏移减镜头位置乘比例;按纹理宽度取零到宽度之间的余数。视口宽度不超过一块纹理,报告紧邻的两块起点。
纹理宽80,四层[初始偏移,滚动比例][[54, '0'], [75, '1/4'], [27, '1/2'], [48, '5/4']] 十个镜头位置[-46, 120, -63, -58, 45, 59, 107, 124, 6, -130]
逐步记录
镜头位置-46,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['54', '54', ['-26', '54']], ['173/2', '13/2', ['-147/2', '13/2']], ['50', '50', ['-30', '50']], ['211/2', '51/2', ['-109/2', '51/2']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。
镜头位置120,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['54', '54', ['-26', '54']], ['45', '45', ['-35', '45']], ['-33', '47', ['-33', '47']], ['-102', '58', ['-22', '58']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。
镜头位置-63,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['54', '54', ['-26', '54']], ['363/4', '43/4', ['-277/4', '43/4']], ['117/2', '117/2', ['-43/2', '117/2']], ['507/4', '187/4', ['-133/4', '187/4']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。
镜头位置-58,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['54', '54', ['-26', '54']], ['179/2', '19/2', ['-141/2', '19/2']], ['56', '56', ['-24', '56']], ['241/2', '81/2', ['-79/2', '81/2']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。
镜头位置45,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['54', '54', ['-26', '54']], ['255/4', '255/4', ['-65/4', '255/4']], ['9/2', '9/2', ['-151/2', '9/2']], ['-33/4', '287/4', ['-33/4', '287/4']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。
镜头位置59,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['54', '54', ['-26', '54']], ['241/4', '241/4', ['-79/4', '241/4']], ['-5/2', '155/2', ['-5/2', '155/2']], ['-103/4', '217/4', ['-103/4', '217/4']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。
镜头位置107,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['54', '54', ['-26', '54']], ['193/4', '193/4', ['-127/4', '193/4']], ['-53/2', '107/2', ['-53/2', '107/2']], ['-343/4', '297/4', ['-23/4', '297/4']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。
镜头位置124,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['54', '54', ['-26', '54']], ['44', '44', ['-36', '44']], ['-35', '45', ['-35', '45']], ['-107', '53', ['-27', '53']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。
镜头位置6,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['54', '54', ['-26', '54']], ['147/2', '147/2', ['-13/2', '147/2']], ['24', '24', ['-56', '24']], ['81/2', '81/2', ['-79/2', '81/2']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。
镜头位置-130,四层结果依次为[未折回位置,循环相位,相邻两块起点]:[['54', '54', ['-26', '54']], ['215/2', '55/2', ['-105/2', '55/2']], ['92', '12', ['-68', '12']], ['421/2', '101/2', ['-59/2', '101/2']]]。每块宽80,视口宽四十,两个相邻副本共同覆盖视口。
比例为零的层相位保持不变,其余层根据镜头和自身比例移动,越界只改变循环表示。
复核方法和适用范围
从前一次镜头到下一次的位移乘比例,应与该层未折回位移变化相反。两个相差完整纹理宽度的位置代表同一循环相位;折回结果必须非负且小于宽度,尤其检查负镜头位置。
滚动比例描述本例的画面效果,不是实际物体远近的物理测量。图层若不具备可平铺的边缘,仅正确计算循环位置也不能消除接缝。这里不计算遮挡、垂直滚动或相机缩放。
练习时可以只改动一项输入,预测从哪一步开始出现变化,再逐步比较。空状态、数值零和无法判断要分别记录;不要为了让最后结果一致而忽略中途的偏差。边界与同分约定同样属于规则,复核时应一并保留。
