VCIを出した際に、message(”KasaTransformPosPlz”)にて、VCIの個別IDが共有されるので、それを使って、message(”kasaMovePlz”)にてTransformの情報を送ると、移動させることができます。
--傘Transform用Message
--message[1]:VCI初期ロード時に発行されるVCIの個別ID
--message[2]:Transform用Tbl
function kasaTransform(sender, name, message)
if wagasa.IsMine and message[1] == vci.assets.GetInstanceId() then
local pos = Vector3.zero
local rot = Quaternion.identity
local scl = Vector3.zero
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]
wagasa.SetPosition(pos)
wagasa.SetRotation(rot)
wagasa.SetLocalScale(scl)
end
end
vci.message.On("kasaMovePlz", kasaTransform)
--VCIを出した際にmessageを送信し、VCIの個別IDを共有
function update()
if vci.state.Get("InitialSetMes") == nil then
vci.message.Emit("KasaTransformPosPlz", vci.assets.GetInstanceId())
vci.state.Set("InitialSetMes", "Done")
end
end
移動させるためのスクリプトの一例は以下の通りです。
function kasaTransformMessage(sender, name, message)
local tempTrns = {}
tempTrns[1] = vci.assets.GetTransform("Wagasa"..kasaSetCnt).GetPosition().x
tempTrns[2] = vci.assets.GetTransform("Wagasa"..kasaSetCnt).GetPosition().y
tempTrns[3] = vci.assets.GetTransform("Wagasa"..kasaSetCnt).GetPosition().z
tempTrns[4] = vci.assets.GetTransform("Wagasa"..kasaSetCnt).GetRotation().x
tempTrns[5] = vci.assets.GetTransform("Wagasa"..kasaSetCnt).GetRotation().y
tempTrns[6] = vci.assets.GetTransform("Wagasa"..kasaSetCnt).GetRotation().z
tempTrns[7] = vci.assets.GetTransform("Wagasa"..kasaSetCnt).GetRotation().w
tempTrns[8] = 2.4*vci.assets.GetTransform("Wagasa"..kasaSetCnt).GetLocalScale().x
tempTrns[9] = 2.4*vci.assets.GetTransform("Wagasa"..kasaSetCnt).GetLocalScale().y
tempTrns[10] = 2.4*vci.assets.GetTransform("Wagasa"..kasaSetCnt).GetLocalScale().z
vci.message.Emit("kasaMovePlz", {message, tempTrns})
end
vci.message.On("KasaTransformPosPlz", kasaTransformMessage)