VCIを出した際に、message(”SakuraChairTransformPosPlz”)にて、VCIの個別IDが共有されるので、それを使って、message(”SakuraChairTransformPlz1~4”)にてTransformの情報を送ると、4つの椅子を個別に移動させることができます。
--椅子のTransform用Message
--message[1]:VCI初期ロード時に発行されるVCIの個別ID
--message[2]:Transform用Tbl
function chairTransform(sender, name, message)
local number = string.sub(name, -1)
if sakuraChair[tonumber(number)].IsMine and message[1] == vci.assets.GetInstanceId() then
local pos = Vector3.zero
local rot = Quaternion.identity
local scl = Vector3.one
pos.x = message[2][1]
pos.y = message[2][2]
pos.z = message[2][3]
rot.x = message[2][4]
rot.y = message[2][5]
rot.z = message[2][6]
rot.w = message[2][7]
scl.x = message[2][8]
scl.y = message[2][9]
scl.z = message[2][10]
sakuraChair[tonumber(number)].SetPosition(pos)
sakuraChair[tonumber(number)].SetRotation(rot)
sakuraChair[tonumber(number)].SetLocalScale(scl)
end
end
vci.message.On("SakuraChairTransformPlz1", chairTransform)
vci.message.On("SakuraChairTransformPlz2", chairTransform)
vci.message.On("SakuraChairTransformPlz3", chairTransform)
vci.message.On("SakuraChairTransformPlz4", chairTransform)
--VCIを出した際にmessageを送信し、VCIの個別IDを共有
function update()
if vci.state.Get("InitialSetMes") == nil then
vci.message.Emit("SakuraChairTransformPosPlz", vci.assets.GetInstanceId())
vci.state.Set("InitialSetMes", "Done")
end
end
移動させるためのスクリプトの一例は以下の通りです。
function sakuraChairTransformMessage(sender, name, message)
for i = 1, 4 do
local tempTrns = {}
tempTrns[1] = vci.assets.GetTransform("SakuraChair"..i).GetPosition().x
tempTrns[2] = vci.assets.GetTransform("SakuraChair"..i).GetPosition().y
tempTrns[3] = vci.assets.GetTransform("SakuraChair"..i).GetPosition().z
tempTrns[4] = vci.assets.GetTransform("SakuraChair"..i).GetRotation().x
tempTrns[5] = vci.assets.GetTransform("SakuraChair"..i).GetRotation().y
tempTrns[6] = vci.assets.GetTransform("SakuraChair"..i).GetRotation().z
tempTrns[7] = vci.assets.GetTransform("SakuraChair"..i).GetRotation().w
tempTrns[8] = vci.assets.GetTransform("SakuraChair"..i).GetLocalScale().x
tempTrns[9] = vci.assets.GetTransform("SakuraChair"..i).GetLocalScale().y
tempTrns[10] = vci.assets.GetTransform("SakuraChair"..i).GetLocalScale().z
vci.message.Emit("SakuraChairTransformPlz"..i, {message, tempTrns})
end
end
vci.message.On("SakuraChairTransformPosPlz", sakuraChairTransformMessage)