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)