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