你如何在 Roblox 中传送角色而不留下残留物?
Posted
技术标签:
【中文标题】你如何在 Roblox 中传送角色而不留下残留物?【英文标题】:How do you teleport characters in Roblox without leaving residue? 【发布时间】:2022-01-05 18:53:29 【问题描述】:如何在 Roblox 中传送角色而不导致 HumanoidRootPart 与角色不同步?我发现仅移动 HumanoidRootPart 会导致角色的其余部分快速回到您希望它们所在的位置,但对于服务器来说,它仍然在传送之前就位。有没有更好的方法?
【问题讨论】:
您能提供更多上下文吗?在某些情况下,传送不起作用。例如,从您自己的客户端移动另一个玩家的角色。 @kojocrash 我给的只是一个传送角色的例子,移动角色应该在服务器中完成。 @kojocrash 堆栈溢出的一个特性,用来传播知识。我使用它的原因是我发现model:MoveTo()
在服务器上看起来更好,并且可以与所有模型一起使用。
啊好吧。关于model:MoveTo(pos)
需要注意的一件事是,如果目标位置有物体阻挡,模型将传送到物体上方的位置。但是,model:SetPrimaryPartCFrame(cf)
不会反映这种行为。这完全取决于您要达到的目标。
【参考方案1】:
是的,您可以使用model:MoveTo()
移动模型(字符即模型)。
例如,一个简单的传送器:
local debounce = false
-- the teleporter is just a part with the script it's child
script.Parent.Touched:Connect(function (hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player and not debounce then
debounce = true
local char = player.Character
local rootPart = char:WaitForChild("HumanoidRootPart")
char:MoveTo(rootPart.Position + Vector3.new(0, 10, 0))
wait(.5)
debounce = false
end
end)
【讨论】:
以上是关于你如何在 Roblox 中传送角色而不留下残留物?的主要内容,如果未能解决你的问题,请参考以下文章