我创建的所有 Phaser.Sprite 个对象突然丢失了它们的 2D 坐标

All Phaser.Sprite objects I create suddenly are missing their 2D coordinates

我正在使用 Typescript 中的 Phaser 制作游戏,为了让它更易于管理,我创建了一些界面,并让我的 Sprites 实现了它们。

在我创建接口之前,一切正常。所有创建的 Sprites 都有正确更新的 2D 坐标 (Sprite.{x,y})。

虽然在我创建接口之后,新创建的 Sprites 不再包含 xy 坐标,即使是在创建后立即(边缘浏览器调试器):

右侧的"watch"列表显示this的内容。如您所见,它有一个 z 坐标,但没有 xy 坐标。

我没有对基础物理设置进行任何更改,也从未明确删除属性。我没有机会,即使我想,因为正如你在上面看到的,即使在 Sprite 创建后立即检查它们也不存在。我对 base-class Tank 所做的唯一更改是添加 tankMover 属性,但如您所见,断点时它甚至还没有创建已激活。

我不会t/can不包含所有代码,因为我所做的更改跨越许多文件,但 none 的影响物理;他们基本上只是以有限的方式增加 Sprite 的速度。

为了确保它与 Tank class 没有任何关系,我在主状态的 create 方法中创建了一个临时 Sprite .如您所见,即使在创建并添加到物理系统之后,它也没有坐标:

在 Phaser 中,什么会导致 Spritexy 坐标属性无法填充?

这是由两件事造成的:

  • Edge 不报告 Sprite 的 x 和 y 坐标;即使它们存在。
  • 我不小心将 this 而不是 this.host 传递给了 Phaser 的 Phaser.Math.angleToXY 函数,由于某种原因 Typescript 的类型系统没有捕捉到它,尽管它显然是错误的。

感谢微软。