首页 > 解决方案 > 如何正确检测移相器 3 中的对象碰撞?

问题描述

我有一个问题,我需要检测 2 个容器何时发生碰撞,但是在对象开始移动之前检测到我的碰撞,即在屏幕上发生任何碰撞之前。stopMovement() 回调在任何碰撞发生之前立即执行。任何移相器专家可以提供帮助?

 const move1 = setInterval(() => {
  container1.x += 1
}, 20);

const move2 = setInterval(() => {
  container2.x -= 1
}, 20);

this.gameInstance.physics.add.collider(container1, container2, this.stopMovement(move1, move2), null, this)

标签: javascripttypescriptphaser-framework

解决方案


在您this.stopMovement(move1, move2)立即调用的提供的代码中,这就是运动停止的原因。

正确的是创建一个函数或一个内联匿名函数,您将其分配给this.gameInstance.physics.add.collider回调。

例子

内联匿名函数

this.gameInstance.physics.add.collider(container1, container2, () => this.stopMovement(move1, move2), null, this)

分离功能

function colliderCallbackHandler() {
  this.stopMovement(move1, move2)
}

this.gameInstance.physics.add.collider(container1, container2, colliderCallbackHandler, null, this)

推荐阅读