我有一个多人游戏,其中多个客户端都拉着一个中心对象。我想在客户端之间同步该对象的位置,例如,如果其中一个客户端切换选项卡一段时间。
这是我的更新功能:
// update velocities of main object to those received from the server
ball.body.velocity.y = game.y;
ball.body.velocity.x = game.x;
// does nothing
ball.x = 600;
// works as expected, pinning ball to x 600
ball.body.x = 600;
为什么会这样?我知道.x和.body.x应该与在精灵上启用的物理功能相同。
答案 0 :(得分:0)
据我所知,.body.x和.x是不同的。根据phaser.io,
所有物理操作都应针对身体而不是Sprite本身进行。
因此,如果sprite具有body,请使用.body。当在错误的情况下使用这两个属性时,由于物理引擎应用于该对象,它根本无法工作。这是我将其用于什么用途的指南:
在启用了物理学的任何对象(例如精灵,组,平台等)上使用.body.x。
在没有启用物理引擎的任何对象上使用.x,例如平铺精灵,粒子(大多数情况下),与其他对象没有交互作用的其他装饰性精灵。