具有非矩形轮廓的静态和可移动对象之间的碰撞问题

时间:2019-04-18 18:02:23

标签: phaser-framework

作为工作的一部分,我被告知要在相位器中创建一个小游戏,我必须使用鼠标将某些对象拖放到场景中的某些静态对象上,并确定是否在匹配的静态对象上进行了拖放。静态对象和非静态对象都具有非矩形边界,因此我使用物理编辑器绘制了边界并将其导入到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;
                }
            });

0 个答案:

没有答案