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