合作画面需要同时容纳几名角色时,可以先求全部位置的外接范围,再给范围加留白,最后按窗口尺寸选择统一缩放。只取角色坐标平均值并不一定能让两端都留出空间。
下面给出一组可以从头复算的练习数据。先按约定记录每一步,再比较最后的核对条件;遇到差异时,不急着修改答案,而是先找出从哪一步开始不同。本例描述的是明确限定的游戏规则模型,不代替某款作品自己的说明。
本例不旋转镜头,世界与画面的纵轴都向上。中心取最左最右和最上最下的中点;两轴使用同一缩放,且最多原尺寸,不做放大。留白按世界单位计算。
对外接范围两端各加留白;中心取范围中点;缩放取宽度比例、高度比例和1中的最小值。
画面宽92高75,世界留白8 角色世界位置[(10, 20), (-25, -15), (-10, -20), (25, -15), (-20, 20), (-20, 0)]
世界点(10,20)相对中心偏移(10,20),缩放后画面位置(56,115/2)。
世界点(-25,-15)相对中心偏移(-25,-15),缩放后画面位置(21,45/2)。
世界点(-10,-20)相对中心偏移(-10,-20),缩放后画面位置(36,35/2)。
世界点(25,-15)相对中心偏移(25,-15),缩放后画面位置(71,45/2)。
世界点(-20,20)相对中心偏移(-20,20),缩放后画面位置(26,115/2)。
世界点(-20,0)相对中心偏移(-20,0),缩放后画面位置(26,75/2)。
含留白范围[-33,-28,33,28],中心(0,0),统一缩放1。
把加过留白的范围四个角映射到窗口后,都必须位于边界内。横纵缩放不能各算各用,否则虽然塞得进画面,却会改变形状比例。
角色突然分开时,马上改变缩放可能让画面跳动;实际项目可以再增加平滑,但平滑过程可能暂时容纳不下全部角色。这里先给出静态目标,便于分开检查范围计算与动态效果。
把边界、顺序与适用范围写进记录,比只记一个最后数字更有用。可以另外构造刚好在边界、完全没有变化和多个条件同时成立的情况,查看规则是否仍自洽;若要改变设定,保留原案例作为对照,再重新计算受影响的部分。