【发布时间】:2017-02-13 19:38:18
【问题描述】:
我正在尝试编写一个函数来检查街机物理主体在某个偏移处重叠。这是我的代码:
function overlapAtOffsetSprite(object1, object2, offsetX, offsetY)
{
if (typeof(object1.body) === "undefined" || typeof(object2.body) === "undefined"){
return false;
}
var bounds1 = new Phaser.Rectangle(object1.position.x + object1.body.offset.x + offsetX,
object1.position.y + object1.body.offset.y + offsetY,
object1.body.width, object1.body.height);
var bounds2 = new Phaser.Rectangle(object2.position.x + object2.body.offset.x, object2.position.y +
object2.body.offset.y, object2.body.width, object2.body.height);
return Phaser.Rectangle.intersects(bounds1, bounds2);
}
function overlapAtOffset(object1, object2, offsetX, offsetY)
{
if (object1.name == "group")
{
object1.forEach(function(child)
{
if (overlapAtOffset(child, object2, offsetX, offsetY))
return true;
});
}
else if (object2.name == "group")
{
object2.forEach(function(child)
{
if (overlapAtOffset(object1, child, offsetX, offsetY))
return true;
});
}
else
{
return overlapAtOffsetSprite(object1, object2, offsetX, offsetY);
}
return false;
}
基本上,函数overlapAtOffsetSprite 检查偏移处的两个精灵之间的重叠,而函数overlapAtOffset 通过循环遍历每个组的精灵并在每个组上使用overlapAtOffsetSprite 来检查精灵和组之间或两组之间的重叠精灵。 overlapAtOffsetSprite 函数在测试时似乎工作正常,但 overlapAtOffset 有问题。
提前致谢。
【问题讨论】:
标签: javascript physics overlap phaser-framework