corona和AppWarp多人游戏中的英雄移动

我正在尝试移动多人游戏中的英雄向左和向右移动。 我有两个正方形用于启动普通圆形的向左和向右移动。

我正在使用AppWarp启动多人游戏实例,这可以正常工作,但是我在如何通讯圆形移动方面遇到了麻烦。

这是我的lua:

-当左箭头被触摸时,向左移动字符
 function left:touch()
  motionx = -speed;
 end
 left:addEventListener(“touch”,left)

-当右箭头被触摸时,向右移动字符
 function right:touch()
  motionx = speed;
 end
 right:addEventListener(“touch”,right)
 -移动字符
 本地功能movePlayer(事件)
  appWarpClient.sendUpdatePeers(tostring(player.x))

 end
 Runtime:addEventListener(“enterFrame”,movePlayer)
-当未按下箭头时停止字符移动
 本地功能stop(事件)
  如果事件阶段==“ended” then
   motionx = 0;

  end

这里的关键线是

appWarpClient.sendUpdatePeers(tostring(player.x))

通过这个,我发送了我的英雄(圆圈)的当前X位置,在我的 warplisteners 中,我像这样拾取它:

function onUpdatePeersReceived(update)
  local func = string.gmatch(update,"%S+")
  -提取以空格分隔的发送值
  -local id = tostring(func())
  local x = func()
  statusText.text = x
  player.x = x + motionx
end

当我在2个客户端上启动游戏时,我可以开始移动球,但它在62个单位之间来回摆动,这就是我的速度

速度=6; -设置步行速度

如果我将其更改为:

function onUpdatePeersReceived(update)
  local func = string.gmatch(update,"%S+")
  -提取以空格分隔的发送值
  -local id = tostring(func())
  local x = func()
  statusText.text = x
  player.x = player.x + motionx
end

(结束前的最后一行)

player.x = player.x + motionx

而不是

player.x = x + motionx

坐标得到更新,但是英雄只在一个屏幕上移动。

有没有想法如何实现更好的移动系统,在两个客户端上同时移动我的英雄?

最好的祝福

编辑:

如果-else,它在速度为0时处于+-speed和0之间,因为当英雄停止时速度为0。

if(motionx〜=“0”)then
    player.x = player.x + motionx
    statusText.text =“motionx〜= 0elseif(motionx ==“0”)then
      player.x = player.x
    else
      statusText.text =“发生了可怕的事情”
    end
点赞