我正在使用打字稿中的Phaser制作游戏,为了使其更易于管理,我创建了一些界面,让我的精灵实现它们。
在创建界面之前,一切正常。所有创建的Sprite都具有正确更新的2D坐标(Sprite.{x,y}
)。
创建接口后,新创建的Sprite
不再包含x
和y
坐标,甚至在创建后立即(Edge浏览器调试器):
右侧的“观察”列表显示this
的内容。如您所见,它有一个z
- 坐标,但没有x
或y
- 坐标。
我没有对基础物理设置进行任何更改,也从未明确删除属性。我没有机会,即使我想要,因为你可以看到,即使在Sprite
创建之后立即检查,它们也不存在。我对基类Tank
所做的唯一更改是添加tankMover
属性,但正如您所看到的,它甚至不会在断点被激活时创建。
我不会/不能包含所有代码,因为我所做的更改跨越了许多文件,但没有一个会影响物理;它们基本上只是以有限的方式将速度添加到Sprite
。
为了确保它与Tank
类没有任何关系,我在主要状态的Sprite
方法中创建了一个临时create
。正如您所看到的,即使在创建和添加到物理系统之后,它也没有坐标:
在Phaser中,什么可能导致x
的{{1}}和y
坐标属性无法填充?
答案 0 :(得分:0)
这是由两件事引起的:
this
而不是this.host
传递给Phaser的Phaser.Math.angleToXY
函数,由于某种原因,Typecript的类型系统没有抓住它,即使这显然是错误的。感谢微软。