我正在尝试做到这一点,所以当您在我的Roblox游戏中生成时,您就在一个房间里。如果您走过其中一扇门,它会传送您并改变您的团队。到目前为止,这是我的代码:
function onTouched(m)
p = m.Parent:findFirstChild("Humanoid")
if p ~= nil then
p.Torso.CFrame = CFrame.new(0,8,9) --Change to coordinates.
end
end
script.Parent.Touched:connect(onTouched)
我做到了,所以它可以传送你,但是我不知道如何做到,这也改变了你的团队。这是我的团队
首次加入时,您就是公民团队。当您走进大门时,您将前往城堡小队。
有人知道怎么做吗?
答案 0 :(得分:0)
您可以使用“ GetPlayerFromCharacter”功能,然后从此处更改玩家的团队
function onTouched(m)
p = m.Parent:FindFirstChildOfClass("Humanoid")
if p ~= nil and p:FindFirstChild("Torso") then
p.Torso.CFrame = CFrame.new(0,8,9) --Change to coordinates.
if game.Players:GetPlayerFromCharacter(m.Parent) ~= nil then
game.Players:GetPlayerFromCharacter(m.Parent).Team = game.Teams["Castle Team"] --Change to desired team.
end
end
end
script.Parent.Touched:connect(onTouched)
编辑:Taazar的脚本更好,请使用它代替我的
答案 1 :(得分:0)
在我开始换队之前,您应该注意,更改球员"Torso"
的CFrame会杀死他们。相反,您应该更改名为"HumanoidRootPart"
的零件的CFrame,该零件按角色排序,并且与玩家的"Torso"
位置相同。
另一点是,当仅使用三个坐标创建新的CFrame位置时,您需要将其从Vector3进行转换。因此,遵循您的所有传送线路将变为:
p.HumanoidRootPart.CFrame = CFrame.new(Vector3.new(0,8,9))
然后更换团队,我会看一下Crabway的答案,因为我看不到团队变更的任何问题。因此,您的最终结果代码将如下所示:
function onTouched(m)
p = m.Parent:FindFirstChildOfClass("Humanoid")
if p ~= nil and p:FindFirstChild("Torso") then
p.HumanoidRootPart.CFrame = CFrame.new(Vector3.new(0,8,9)) --Change to coordinates.
if game.Players:GetPlayerFromCharacter(m.Parent) ~= nil then
game.Players:GetPlayerFromCharacter(m.Parent).Team = game.Teams["Castle Team"] --Change to desired team.
end
end
end
script.Parent.Touched:connect(onTouched)
答案 2 :(得分:0)
无需编写任何代码的解决方案:
在您的初始房间中放置2个SpawnLocation。 像这样设置第一个SpawnLocation的属性:
第二个SpawnLocation像这样:
在资源管理器(Roblox Studio资源管理器)的TEAMS文件夹中,将两个团队的“自动分配”设置为 FALSE 。
将这些SpawnLocations放置在您2个门的前面,因此玩家在进入门前必须触摸它们(踩到它们)。
工作原理:
如果有新玩家加入游戏,他将在您房间的中央产生,而他尚未分配任何团队。
然后他必须走过您的SpawnLocations中的一个,这将为他分配一个团队(取决于他踩到的SpawnLocation)。
然后他可以继续上门。
下一次该玩家在死后生成游戏。他将直接在其团队的SpawnLocation产生,并可以直接进入大门。