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;
}
});
解决方案
推荐阅读
- javascript - 带有 JS 的图片库
- python - 如何重命名包含括号和引号的列名?
- notepad++ - 如何删除文本后 | 记事本++中的字符
- json - 从 SQL Server NVARCHAR 列中提取 JSON 值
- android - Ionic 3 应用程序 - 如何使字体大小独立于本机设置?
- okhttp - 如何设置 OkHttp 来请求压缩资源而不是解压缩它们
- php - Laravel 不规则复数模型名称
- r - 了解 r 中 durbinWatsonTest() 的输出
- biztalk - 无法将绑定文件导入 Biztalk 管理控制台
- c# - 类型中的成员类型与 EF 中类型中的成员类型不兼容