특정 오프셋에서 아케이드 물리 구조가 겹치는 지 확인하는 함수를 작성하려고합니다. 각 그룹의 스프라이트 통해 반복하고 overlapAtOffsetSprite
를 사용하여 스프라이트 및 그룹 간 또는 제 2 개 그룹 사이에 중첩을위한 오프셋 함수 overlapAtOffset
검사에서 2 개 스프라이트 사이에 중첩을위한오프셋에서 오버랩 확인 - 페이저
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
검사 : 여기 내 코드의 각 스프라이트에. overlapAtOffsetSprite
함수는 테스트 할 때 제대로 작동하는 것으로 보이지만 overlapAtOffset
과 함께 뭔가 잘못되었습니다.
미리 감사드립니다.