Firebase Can';我看不到另一个部门在动

Firebase Can';我看不到另一个部门在动,firebase,Firebase,我决定做一个非常基本的多人游戏。 目前,我已经成功地实现了状态检测,当一个新用户登录时,他的div会出现在初始屏幕上,但仅此而已。 我想知道我是否需要在每个分区每次移动时更新它们的位置,并在Firebase中拥有该存储?以下是用户登录时我当前必须附加的div: presence.on('value', function(snapshot) { var online = snapshot.numChildren(); $('#online').html(onlin

我决定做一个非常基本的多人游戏。 目前,我已经成功地实现了状态检测,当一个新用户登录时,他的div会出现在初始屏幕上,但仅此而已。 我想知道我是否需要在每个分区每次移动时更新它们的位置,并在Firebase中拥有该存储?以下是用户登录时我当前必须附加的div:

 presence.on('value', function(snapshot) {
        var online = snapshot.numChildren();
        $('#online').html(online + ' online.');
        $('#game').append('<div class="'+ uid +'" id="character"></div>');
    })
presence.on('value',函数(快照){
var online=snapshot.numChildren();
$(“#在线”).html(在线+“在线”);
$(“#游戏”)。附加(“”);
})
我决定也给每个div一个特定的uid来区分它们。 如果你看看我下面的代码,我还包括一个基本的运动系统

这是小提琴:

我希望有人能帮我解决这个问题,
提前谢谢

小提琴中的代码目前有两个功能:

  • 倾听聊天室中是否有用户/玩家
  • 使用光标键时,在屏幕上移动一个框
  • 但这两段代码目前似乎完全不相关。要使其成为多人游戏,您必须将每个用户的盒子所在的坐标发送给其他玩家。幸运的是,这是Firebase擅长的东西

    假设您有如下数据结构:

    positions
       uid1: { x: 100, y: 150 }
       uid2: { x:  25, y: 200 }
    
    每个玩家只需聆听所有位置,并在正确的位置绘制方框。每个玩家还可以操作键盘并更新他们在Firebase中的位置。这将循环并通知所有玩家

    因此,您需要采取以下步骤:

  • 在键盘操作中更新玩家在Firebase中的位置
  • 每当发生变化时,绘制所有玩家框
  • 您已经有了键盘处理代码,所以您所需要做的就是添加代码以将新位置存储在Firebase中

    var myPositionRef = firebaseRef.child('positions').child(uid);
    
    $(document).keydown(function(e) {
      switch (e.which) {
        case 37:
          $('#character').stop().animate({
            left: '-=10'
          }); //left arrow key
          myPositionRef.transaction(function(currentPosition) {
            if (currentPosition) {
              currentPosition.x -= 10;
            }
            else {
              currentPosition = { x: 0, y: 0 };
            }
            return currentPosition;
          });
          break;
        ...
      }
    

    可能有几十种其他/更简单的方法可以做到这一点,但这应该足以让您开始。

    如果所有玩家都需要知道所有玩家的位置,那么您需要同步所有玩家的位置。但这是否是你比赛所需要的,只有你自己能决定。除非你澄清你到底想完成什么以及你在哪里遇到了麻烦,否则我将投票结束这个问题,因为这个问题不清楚。我只是不明白背后的逻辑,以及我应该从何处着手来实现我的目标:让一个div四处移动并显示在另一个用户的屏幕上。我花了很多时间寻找像这样的多人教程,但我还没有找到任何接近我想要实现的东西,即使它应该足够简单。非常感谢弗兰克!我还有一个问题!为什么我在尝试更新位置时会得到一个“无法读取未定义的属性x”我的代码是作为如何执行此操作的概述,而不是作为一个工作示例。如果出现这样的错误,请在浏览器的调试器中设置一个断点并逐步执行代码,每一步都检查变量。这样做不仅会教你从不同的地方复制/粘贴代码。是你自己的代码导致了错误。顺便说一句:点击Chrome的JavaScript控制台中的错误消息会让我进入
    console.log(firebaseRef.myPositionRef.x)是的,我知道就是这样,但为什么它会给我一个错误?
    firebaseRef.myPositionRef.x
    是否未正确引用?