游戏状态推演课:分层背景的视差位移(练习05)
这份练习围绕分层背景的视差位移展开,给出独立的虚构输入、明确的规则和完整推演记录。它不对应任何品牌或真实产品的默认参数,适合先自己算一遍,再逐行核对。重点是分清输入、可见状态与规则,而不是把最后一组数字当成需要记忆的答案。
理解机制
画面中不同背景层可以按不同系数跟随镜头,让同一次镜头移动呈现不同屏幕位移。区分世界锚点、镜头位置、层系数三个量,能避免把背景本身的移动混入计算。
本例只做水平平移,不缩放、不旋转。系数是预先约定的显示规则,不用于推断实际三维距离或真实相机参数。
规则与独立输入
每层屏幕位置等于该层固定锚点减去系数乘镜头横坐标。镜头向右为正,层锚点不随记录变化,分数保留。
四层锚点[125, 67, 117, 100],系数分子[0, 1, 2, 4],共同分母4 镜头记录[39, 44, -28, -11, 14, 18, -16, 41]
逐步推演
镜头横坐标39时,四层位置依次为['125', '229/4', '195/2', '61'];各层分别减去镜头位置的0、1/4、1/2、1倍。
镜头横坐标44时,四层位置依次为['125', '56', '95', '56'];各层分别减去镜头位置的0、1/4、1/2、1倍。
镜头横坐标-28时,四层位置依次为['125', '74', '131', '128'];各层分别减去镜头位置的0、1/4、1/2、1倍。
镜头横坐标-11时,四层位置依次为['125', '279/4', '245/2', '111'];各层分别减去镜头位置的0、1/4、1/2、1倍。
镜头横坐标14时,四层位置依次为['125', '127/2', '110', '86'];各层分别减去镜头位置的0、1/4、1/2、1倍。
镜头横坐标18时,四层位置依次为['125', '125/2', '108', '82'];各层分别减去镜头位置的0、1/4、1/2、1倍。
镜头横坐标-16时,四层位置依次为['125', '71', '125', '116'];各层分别减去镜头位置的0、1/4、1/2、1倍。
镜头横坐标41时,四层位置依次为['125', '227/4', '193/2', '59'];各层分别减去镜头位置的0、1/4、1/2、1倍。
结果与交叉核对
最后一条镜头记录对应位置['125', '227/4', '193/2', '59']。
任意两条记录之间,某层的屏幕位移应等于镜头位移的负系数倍。零系数层始终不动,系数为一的层与镜头等量反向;这能在不重复计算所有绝对位置的情况下复核。
复盘练习
动手复盘时,把每一步的输入、操作前值、判断依据和操作后值分开写。若与示例不一致,先定位第一处分歧,检查边界是否包含、顺序是否颠倒、编号和单位是否一致。不要跳过中间状态只修正最后数字,也不要把未规定的行为凭经验补进去。
再做一次练习时只调整一项输入,先预测哪些后续行会变化,再重新推演并保留两份记录。对没有变化的部分也说明原因,能帮助判断机制的作用范围。应用到真实游戏之前,应先在说明或可重复场景中确认对应条件;不同作品可能使用不同边界、优先级和时间约定。