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