游戏机制练习簿:拖动阈值与返回起点后的状态——阈值9与返回原点的输入(案例08)
按住指针后轻微抖动通常不必立即当成拖动,但一旦越过阈值开始拖动,回到起点也不应该自动变回普通点击。这里的状态取决于本次按住期间的历史,而不只看最后的位置。
以下是一组输入完整的独立案例。先读清规则,再按时间或操作顺序记录中间状态;遇到与预期不同的结果时,检查首次出现差异的位置。案例使用明确限定的教学模型,不假定所有作品都采用相同的处理方式。
规则和原始数据
按下点固定,距离平方达到阈值平方时启动拖动,等号包含在内。状态在本次按住期间保持,抬起时根据是否曾触发输出点击或拖动结束;忽略设备采样之间的未观测路径。
按下点[-3, 7],阈值9,最后一个采样后抬起 [[-3, 7], [5, 7], [6, 7], [-3, 7], [-7, 0], [-5, 1], [-2, -4], [-7, 14], [-10, 17], [-3, 8], [2, 9], [-3, 7]]
逐步记录
采样1在(-3,7),相对按下点偏移(0,0)、距离平方0,阈值平方81;状态仍为点击候选。
采样2在(5,7),相对按下点偏移(8,0)、距离平方64,阈值平方81;状态仍为点击候选。
采样3在(6,7),相对按下点偏移(9,0)、距离平方81,阈值平方81;状态本次开始拖动。
采样4在(-3,7),相对按下点偏移(0,0)、距离平方0,阈值平方81;状态保持拖动。
采样5在(-7,0),相对按下点偏移(-4,-7)、距离平方65,阈值平方81;状态保持拖动。
采样6在(-5,1),相对按下点偏移(-2,-6)、距离平方40,阈值平方81;状态保持拖动。
采样7在(-2,-4),相对按下点偏移(1,-11)、距离平方122,阈值平方81;状态保持拖动。
采样8在(-7,14),相对按下点偏移(-4,7)、距离平方65,阈值平方81;状态保持拖动。
采样9在(-10,17),相对按下点偏移(-7,10)、距离平方149,阈值平方81;状态保持拖动。
采样10在(-3,8),相对按下点偏移(0,1)、距离平方1,阈值平方81;状态保持拖动。
采样11在(2,9),相对按下点偏移(5,2)、距离平方29,阈值平方81;状态保持拖动。
采样12在(-3,7),相对按下点偏移(0,0)、距离平方0,阈值平方81;状态保持拖动。
抬起时输出“拖动结束”;末点就是按下点,但决定因素是整个按住期间的状态。
交叉核对与应用
记录截至每个采样的最大距离平方,与阈值比较来独立恢复状态。尤其检查超过阈值后返回原点的样本,最终位移为零并不表示从未拖动。
采样点之间实际走过的轨迹在本例中不可见,因此快速移出又移回而没有留下中间采样的运动,不能仅凭这些数据推断。这个限制属于观测条件,不应通过猜测路径来补出拖动事件。
建议保留原始输入、每一步状态和最终输出,再只改变一个条件做对照。重点检查空输入、相等边界、重复请求以及先后顺序;把规则约定、计算过程和显示表现分别核对,比只比较最后一个数字更容易找到原因。