Корона и 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