作为工作的一部分,我被告知要在相位器中创建一个小游戏,我必须使用鼠标将某些对象拖放到场景中的某些静态对象上,并确定是否在匹配的静态对象上进行了拖放。静态对象和非静态对象都具有非矩形边界,因此我使用物理编辑器绘制了边界并将其导入到Phaser中。为了在拖动对象时检测到碰撞,我将物质回调用于“ collisionstart”和“ collisionend”。比如说,我试图将苹果拖到树上时,苹果体与树的轮廓碰撞,就会触发“ collisionstart”,但是当我在树边界内移动“ collisionstart”和“ collisionend”触发器时多次。因此,这似乎是检测两个对象之间重叠的不可靠方法。
冲突代码:
var canDrag = this.matter.world.nextGroup();
currentObject = this.matter.add.image(360, 360, 'Carrot', 0, { chamfer: 16 }).setCollisionGroup(canDrag);
currentObject.body.label = 'Carrot';
this.matter.add.mouseSpring({ collisionFilter: { group: canDrag } });
this.matter.world.on('collisionstart', function (event, bodyA, bodyB)
{
if ((bodyA.parent.label == 'Tree') || (bodyB.parent.label == 'Tree')) {
tree.tint = tintColor;
}
});
this.matter.world.on('collisionend', function (event, bodyA, bodyB)
{
if ((bodyA.parent.label == 'Tree') || (bodyB.parent.label == 'Tree')) {
tree.tint = normalColor;
}
});