更改.x属性没有任何作用,但是.body.property可以工作

时间:2018-07-12 12:57:34

标签: javascript socket.io phaser-framework

我有一个多人游戏,其中多个客户端都拉着一个中心对象。我想在客户端之间同步该对象的位置,例如,如果其中一个客户端切换选项卡一段时间。

这是我的更新功能:

    // 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应该与在精灵上启用的物理功能相同。

1 个答案:

答案 0 :(得分:0)

据我所知,.body.x和.x是不同的。根据phaser.io,

  

所有物理操作都应针对身体而不是Sprite本身进行。

因此,如果sprite具有body,请使用.body。当在错误的情况下使用这两个属性时,由于物理引擎应用于该对象,它根本无法工作。这是我将其用于什么用途的指南:

在启用了物理学的任何对象(例如精灵,组,平台等)上使用.body.x。

在没有启用物理引擎的任何对象上使用.x,例如平铺精灵,粒子(大多数情况下),与其他对象没有交互作用的其他装饰性精灵。