生成具有状态TTS的对象



我想在TabletopSimulator中组合两个或多个对象。Wenn我生成了可以像这个页面一样组合的对象https://kb.tabletopsimulator.com/host-guides/creating-states/.我想和Lua一起创作。所以我需要帮助。。。我生成了像这里这样的对象,但我没有得到两个有2个状态的对象。

function SpawnLevel1(Obj1, ID)
CID = ID
spawnparamslvl = {
type              = 'Custom_Assetbundle',
position          = Obj1.getPosition(),
rotation          = Obj1.getRotation(),
scale             = {x=1, y=1, z=1},
}
paramslvl = {
assetbundle = data[CID].assetbundle,
type        = 1,
material    = 0,
}
Obj2 = spawnObject(spawnparamslvl)
obj_name = data[CID].display_name
Obj2.setDescription(obj_name)
Obj2.setName(obj_name)
Obj2.setCustomObject(paramslvl)
Obj1.addAttachment(Obj2).SetState(1)
end
function deploy(PID)
display_name      = data[PID].display_name
spawnparams = {
type              = 'Custom_Assetbundle',
position          = self.getPosition(),
rotation          = self.getRotation(),
scale             = {x=1, y=1, z=1},
}
params = {
assetbundle = data[PID].assetbundle,
type        = 0,
material    = 0,
}
Spawning(spawnparams, params, display_name, PID)
end
function Spawning(spawnparams, params, display_name, PID)
Obj1 = spawnObject(spawnparamsmain)
ID = PID
Level1 = SpawnLevel1(Obj1, ID)
Obj1.setCustomObject(paramsmain)
Obj1.setName(display_name)
end

谢谢你的帮助氡

您必须使用spawnObjectDataspawnObjectJSON。";对象数据";遵循保存文件的格式。

我将使用现有对象作为模板,而不是对构建对象所需的大型数据结构进行硬编码。这是一种常见的做法,以下修改现有对象的常见习惯用法也反映了这一点:

local data = obj.getData()
-- Modify `data` here --
obj.destruct()
obj = spawnObjectData({ data = data })

以下是";对象数据";对于状态:

{ -- Object data (current state)
-- ...
States = {
["1"] = { -- Object data (state 1)
--- ...
},
["3"] = { -- Object data (state 3)
-- ...
},
["4"] = { -- Object data (state 4)
-- ...
}
},
-- ...
}

所以你可以使用这个:

function combine_objects(base_obj, objs_to_add)
if not objs[1] then
return base_obj
end
local data = base_obj.getData()
if not data.States then
data.States = { }
end
local i = 1
while data.States[tostring(i)] do i = i + 1 end
i = i + 1  -- Skip current state.
while data.States[tostring(i)] do i = i + 1 end
for _, obj in ipairs(objs_to_add) do
data.States[tostring(i)] = obj.getData()
obj.destruct()
i = i + 1
end

base_obj.destruct()
return spawnObjectData({ data = data })
end

最新更新