【问题标题】:What is preventing my collision code from working in Phaser JS?是什么阻止了我的碰撞代码在 Phaser JS 中工作?
【发布时间】:2016-04-27 09:34:18
【问题描述】:

我是第一次使用 Phaser JS 游戏框架。我试图确定两个精灵何时重叠或碰撞。以下是我尝试这样做的方式:

在更新函数中:

update: function() {
    this.game.physics.collide(this.player1, this.player2, this.CollisionD, null, this); 
    this.game.physics.overlap(this.player1, this.player2, this.OverlapD, null, this);
}

然后在我的CollisionD 函数中,这是我的碰撞处理程序,我已经尝试过:

function CollisionD(obj1, obj2) {
    alert('collision!');
}

我试过了:

function CollisionD(player1, player2) {
    alert('collision!');
}

我的重叠检测也是如此。我究竟做错了什么?控制台中也没有显示错误消息。

【问题讨论】:

  • 你的 Phaser 版本是多少?
  • 如果您尝试不使用参数?顺便说一句,Phaser 2.0 将于明天发布,物理管理器将发生很大变化。
  • 如果我尝试不带参数,也是一样。什么都没发生。难道我的精灵不被认为是重叠或碰撞的?尽管如此,一组精灵直接越过主要精灵(主角)。敌人来来去去,越过我的主角。
  • 你缩放你的精灵了吗?
  • 你确定函数 CollisionD 在游戏范围内吗?

标签: javascript phaser-framework


【解决方案1】:

好的,我过去在 Phaser 重叠方面遇到过类似的问题,而且它似乎从来没有像我在指南中看到的那样对我正常工作。因此,我没有传递回调,而是将重叠用作布尔值,并使用 if 语句在其为真时调用该方法。在你的情况下,看起来像:

if(this.game.physics.overlap(this.player1, this.player2))
    overlapD(this.player1, this.player2);

当然它需要多一行,但它省去了损坏代码的麻烦,对吧?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多