北京市海淀区西北旺东路10号院东区13号楼 18362873794 lianxijiuyouhui@j9.fo

新闻动态

游戏规则观察课:斜向移动限速应限制向量长度——长度上限4的十二组移动(练习09)

2026-10-28

同时在横纵两个方向移动时,把两个分量分别限制到最大速度,并不能保证合成速度不超过上限。把向量整体缩放,可以保持方向并控制实际行进速度。

下面使用独立的一组输入,逐步记录规则如何产生结果。建议先自行推演,再寻找与记录第一次不同的位置;检查时间单位、端点归属和处理顺序。所有约定均限定在本例中,其他作品采用不同实现并不自动意味着出错。

本例约定与输入

输入表示期望速度向量,若长度超过给定上限,就按同一比例缩放两个分量;未超限则保持,零向量保持零。本例选择长度可精确表示的整数向量,结果用分数记录。

最大速度长度4 [[-13, 0], [3, 4], [4, 0], [6, 8], [5, 12], [0, 11], [-16, 0], [-3, 4], [0, 0], [0, 12], [0, 5], [8, 15]]

过程与结果

输入(-13,0),长度13,整体缩放比例4/13,得到(-4,0);若分别限制分量则得到[-4, 0],合成长度平方为16。

输入(3,4),长度5,整体缩放比例4/5,得到(12/5,16/5);若分别限制分量则得到[3, 4],合成长度平方为25。

输入(4,0),长度4,整体缩放比例1,得到(4,0);若分别限制分量则得到[4, 0],合成长度平方为16。

输入(6,8),长度10,整体缩放比例2/5,得到(12/5,16/5);若分别限制分量则得到[4, 4],合成长度平方为32。

输入(5,12),长度13,整体缩放比例4/13,得到(20/13,48/13);若分别限制分量则得到[4, 4],合成长度平方为32。

输入(0,11),长度11,整体缩放比例4/11,得到(0,4);若分别限制分量则得到[0, 4],合成长度平方为16。

输入(-16,0),长度16,整体缩放比例1/4,得到(-4,0);若分别限制分量则得到[-4, 0],合成长度平方为16。

输入(-3,4),长度5,整体缩放比例4/5,得到(-12/5,16/5);若分别限制分量则得到[-3, 4],合成长度平方为25。

输入(0,0),长度0,整体缩放比例1,得到(0,0);若分别限制分量则得到[0, 0],合成长度平方为0。

输入(0,12),长度12,整体缩放比例1/3,得到(0,4);若分别限制分量则得到[0, 4],合成长度平方为16。

输入(0,5),长度5,整体缩放比例4/5,得到(0,4);若分别限制分量则得到[0, 4],合成长度平方为16。

输入(8,15),长度17,整体缩放比例4/17,得到(32/17,60/17);若分别限制分量则得到[4, 4],合成长度平方为32。

整体限速后每组长度平方都不超过上限平方,且保持原方向或静止状态。

如何独立复核

核对输出方向与输入平行、长度不超过上限;超限输入的输出长度应恰好等于上限。另计算逐分量限制的结果,观察它与整体限速不是同一条规则。

如果控制意图是让模拟摇杆保留轻推时的慢速,就不能把所有非零输入都归一化到同样长度。本例只缩小超限向量,已经较慢的输入保持原样。

测试时保留原始数据与中间状态,再只改变一个条件作比较。先检查空状态、相等边界、重复输入和最后一步,再比较整体结果;不要为了让最后的数字相同而跳过前面已经出现的差异。明确规则后,复核才有可以重复的依据。