我有一个JavaScript 2d等距游戏,当对象B与对象A相交时,对象B将进入对象A的容器中。
一旦输入对象A的容器,则需要更新对象A的x和y大小(已占用的图块数量)
当对象B添加到对象A时,我首先尝试计算对象的新X大小。
这是代表当前案件的图片:
对象A是带有黑色边框的形状,而对象B是带有红色边框的形状。蓝色区域是对象的“基础” X位置(为0); len1是对象A的X长度(= 2)。与对象2相同;基本X位置(= X2)为1; len2是2
在这种情况下,我试图找出绿色框的X大小,在这种情况下为3。我需要找到一些适用于许多情况的“公式”,例如当X1为在与X2相同的位置(X1-X2 = 0)。
我发现我的问题很难解释,所以希望我的解释清楚。不要犹豫,让我澄清评论中的内容
编辑:还请注意以下可能性
Len1 != Len2
x1 > x2
x1 < x2
答案 0 :(得分:0)
您可以在此处将keyPressed()
与draw
的段进行合并:
a
如果您使用b
,只需将class Segment {
constructor (left, right) {
if (right < left)
throw new Error(`Needs left < right: ${left} > ${right}`);
this.left = left;
this.right = right;
}
merge ({left, right}) {
if (this.left <= right && left <= this.right) {
// both segments intersect
this.left = Math.min(this.left, left);
this.right = Math.max(this.right, right);
}
return this;
}
get length () {
return this.right - this.left + 1;
}
}
let a = new Segment(0,1),
b = new Segment(1,2);
a.merge(b);
console.log(a); // Segment { left: 0, right: 2 }
console.log(a.length); // 3
替换为{x, length}
。
如果要合并帧的X和Y,而不是合并段的X,则right
和x + length - 1
的逻辑相同。