北京市海淀区昌运宫17号市政大厦十三层 13739830341 j9kefu@baidu.ag

公司新闻

游戏机制详解:框选方向决定完整包含还是相交选中——七个矩形对象的十次双向框选(实例21)

2026-10-30

框选工具可以为不同拖动方向赋予不同含义:一种要求对象全部位于框内,另一种只要对象有部分进入即可。若不看方向,同一大小的选择框也可能产生不同结果。

下面是一组独立的虚构游戏输入与逐步结果。先记录单位、编号和端点是否包含,再尝试自己推算,最后对照第一处差异。所有结论都以本例规则为前提;其他作品采用不同约定时,应按它自己的说明重新计算。

本例规则与数据

横向从左往右或同横坐标拖动时采用完整包含,反向拖动采用正面积相交。选择框按两端坐标规范化,宽或高为零时不选任何对象;包含允许边界相等,相交模式下仅仅碰边不算。

七个矩形[[-1, -6, 0, -2], [0, -5, 2, -4], [-6, 1, -2, 4], [1, -6, 2, -3], [-1, 3, 0, 7], [6, 1, 7, 4], [3, -3, 4, -2]] [[[-8, 4], [9, 2]], [[4, -6], [-8, 7]], [[-6, 5], [-9, 1]], [[0, 6], [-1, -5]], [[6, -7], [9, -6]], [[6, -5], [-6, 5]], [[-9, -3], [9, 4]], [[9, 7], [7, -9]], [[-6, 4], [9, -9]], [[9, 8], [-8, -5]]]

过程记录

从[-8, 4]拖到[9, 2],规范化框[-8, 2, 9, 4],使用完整包含规则,选中编号[],共0个对象。

从[4, -6]拖到[-8, 7],规范化框[-8, -6, 4, 7],使用正面积相交规则,选中编号[0, 1, 2, 3, 4, 6],共6个对象。

从[-6, 5]拖到[-9, 1],规范化框[-9, 1, -6, 5],使用正面积相交规则,选中编号[],共0个对象。

从[0, 6]拖到[-1, -5],规范化框[-1, -5, 0, 6],使用正面积相交规则,选中编号[0, 4],共2个对象。

从[6, -7]拖到[9, -6],规范化框[6, -7, 9, -6],使用完整包含规则,选中编号[],共0个对象。

从[6, -5]拖到[-6, 5],规范化框[-6, -5, 6, 5],使用正面积相交规则,选中编号[0, 1, 2, 3, 4, 6],共6个对象。

从[-9, -3]拖到[9, 4],规范化框[-9, -3, 9, 4],使用完整包含规则,选中编号[2, 5, 6],共3个对象。

从[9, 7]拖到[7, -9],规范化框[7, -9, 9, 7],使用正面积相交规则,选中编号[],共0个对象。

从[-6, 4]拖到[9, -9],规范化框[-6, -9, 9, 4],使用完整包含规则,选中编号[0, 1, 2, 3, 5, 6],共6个对象。

从[9, 8]拖到[-8, -5],规范化框[-8, -5, 9, 8],使用正面积相交规则,选中编号[0, 1, 2, 3, 4, 5, 6],共7个对象。

十次选择结果依次为[[], [0, 1, 2, 3, 4, 6], [], [0, 4], [], [0, 1, 2, 3, 4, 6], [2, 5, 6], [], [0, 1, 2, 3, 5, 6], [0, 1, 2, 3, 4, 5, 6]],相同几何框也要连同拖动方向一起解释。

独立核对与实际应用

完整包含逐一检查四条边,正面积相交则分别检查横纵重叠长度都大于零。用相反方向画出同一个框,可以直观看到两套规则的差别,而不是只比较框的面积。

这些是本例工具的明确约定,并非所有游戏编辑器的默认行为。被选对象均为轴对齐矩形,不处理透明形状、旋转、层级或锁定状态。先确定几何命中,再讨论选择集合怎样加入或移除。

测试时先保留输入和中间状态,再只改变一个条件。空状态、正好相等、重复出现和最后一步都值得单独检查。若最终结果不符,应从第一处偏差查起,而不是在末尾随意增加补偿让数字表面一致。