2016-06-05 2 views
0

Это код Lua. Я хочу отправить XXPos, YYPos, ZZPos. Но в единстве3d Он получает только XXPos.Я хочу отправить данные из Lua в C#

socket = require("socket") 
    print(socket._VERSION) 

    function dataListener:post(t) 

    local XPos = ship.rb:getPosition():x() 
    local YPos = ship.rb:getPosition():y() 
    local ZPos = ship.rb:getPosition():z() 
    local XXPos = math.floor(XPos * 1000 + 0.5)/1000 
    local YYPos = math.floor(YPos * 1000 + 0.5)/1000 
    local ZZPos = math.floor(ZPos * 1000 + 0.5)/1000 

    udp=socket.udp(); 
    udp:setpeername("127.0.0.1",8051) 
    udp:send(XXPos, " ", YYPos, " ", ZZPos); 
    end 

При изменении Lua подобного кода

--udp:send(XXPos, " ", YYPos, " ", ZZPos) 
    udp:send(string.format("%d; %d; %d",XXPos,YYPos,ZZPos)) 

Данные получены правильно. Но этот результат имеет 1 цифру, как 3; 5; 2.

Как изменить этот код Lua?

+0

Что вы подразумеваете под "этот результат имеет 1 цифру, как 3; 5; 2."? Кроме того, кажется, что udp: send() принимает только один аргумент, поэтому вам нужно собрать строку. string.format - это путь. – pschulz

+1

Я хочу единорога радуги. – Jakuje

+0

Чего вы ожидали? –

ответ

1
udp:send(string.format("%d; %d; %d",XXPos,YYPos,ZZPos)) 

должен быть udp:send(string.format("%f; %f; %f",XXPos,YYPos,ZZPos))

Обратите внимание на %f. Это означает поплавок.

+1

Спасибо. Это работает хорошо. –

Смежные вопросы