Корона и appwarp движущийся герой в мультиплеере

Я пытаюсь переместить моего героя в многопользовательском режиме влево и вправо. Мне нужно на квадраты, чтобы начать движение влево и движение вправо для обычного круговорота на земле.

Я использую AppWarp для запуска многопользовательского экземпляра, и это работает нормально, однако у меня возникают проблемы с передачей движения круга.

Вот моя Луа:

-- When left arrow is touched, move character left
 function left:touch()
  motionx = -speed;
 end
 left:addEventListener("touch",left)

-- When right arrow is touched, move character right
 function right:touch()
  motionx = speed;
 end
 right:addEventListener("touch",right)
 -- Move character
 local function movePlayer (event)
  appWarpClient.sendUpdatePeers(tostring(player.x))

 end
 Runtime:addEventListener("enterFrame", movePlayer)
 -- Stop character movement when no arrow is pushed
 local function stop (event)
  if event.phase =="ended" then
   motionx = 0;

  end

Ключевая линия здесь

appWarpClient.sendUpdatePeers(tostring(player.x))

при этом я отправляю текущую позицию Х моего героя (круг), и в моих варплистерах я поднимаю его так:

function onUpdatePeersReceived(update)
  local func = string.gmatch(update, "%S+")
  -- extract the sent values which are space delimited
  --local id = tostring(func())
  local x = func()
  statusText.text = x
  player.x = x + motionx
end

Когда я запускаю игру на 2-х клиентах, я могу начать перемещать мяч, но он колеблется между 62 единицами, что, я думаю, является моей скоростью

speed = 6; -- Set Walking Speed

если я изменю это:

function onUpdatePeersReceived(update)
  local func = string.gmatch(update, "%S+")
  -- extract the sent values which are space delimited
  --local id = tostring(func())
  local x = func()
  statusText.text = x
  player.x = x + motionx
end

к этому:

function onUpdatePeersReceived(update)
  local func = string.gmatch(update, "%S+")
  -- extract the sent values which are space delimited
  --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

Координаты обновляются, но герой движется только на одном из экранов.

Любая идея, как реализовать лучшую систему движения, которая перемещает моего героя одновременно на обоих клиентов?

С уважением

редактировать:

Добавлено if-else, оно находилось в ожидании между +-speed и 0, так как скорость равна 0, когда герой остановлен.

if(motionx ~= "0") then
    player.x = player.x + motionx
    statusText.text = "motionx ~= 0"
    elseif(motionx == "0") then
      player.x = player.x
    else
      statusText.text ="Something went horribly wrong"
    end

0 ответов

Другие вопросы по тегам