如何让玩家传送到他们选择的地块?

我已经在这个 subreddit 的帮助下成功制作了一个游戏的地块选择系统。现在我正在尝试让玩家传送到所选的地块,但是我不知道该怎么做。以下是我的代码。

local TweenService = game:GetService("TweenService")

local player = game.Players.LocalPlayer
local Camera = game.Workspace.Camera

local PlotSelect = script.Parent:WaitForChild("PlotSelect")

local Frame = PlotSelect:WaitForChild("Frame")
local Left = Frame:WaitForChild("Left")
local Right = Frame:WaitForChild("Right")
local Select = Frame:WaitForChild("Select")
local SelectedPlot = Frame:WaitForChild("SelectedPlot")

local Menu = script.Parent:WaitForChild("MainMenuGui")
local Menubg = Menu:WaitForChild("MainMenuBackground")
local Playbutton = Menubg:WaitForChild("PlayButton")

local player = game.Players.LocalPlayer
local character = game.Players.LocalPlayer.Character
local humanoid = character:WaitForChild("Humanoid")
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")

continuescript = false

local Plots = game.Workspace.Plots
local Spawns = game.Workspace.Spawns

Camera.CameraType = Enum.CameraType.Scriptable

local function findUnoccupiedPlots()
    local availablePlots = {}
    for i, plot in pairs(Plots:GetChildren()) do
        if plot.Occupant.Value == nil then
            table.insert(availablePlots,plot)
        end
    end
    return availablePlots
end

local TI = TweenInfo.new(
    0.5,
    Enum.EasingStyle.Quint,
    Enum.EasingDirection.InOut,
    0,
    false,
    0
)

local tweenInfo1 = TweenInfo.new(
    1.5,
    Enum.EasingStyle.Back,
    Enum.EasingDirection.InOut
)

local tween1 = TweenService:Create(Frame, tweenInfo1, {Position = UDim2.new(0.5, 0, 0.8, 0)})
local tween2 = TweenService:Create(Frame, tweenInfo1, {Position = UDim2.new(1.5, 0, 0.8, 0)})

Playbutton.MouseButton1Click:Connect(function()
    wait(3)
    continuescript = true
end)

repeat
    wait()
until continuescript == true

tween1:Play()


local function camTween(plot)
    local cf = CFrame.new(plot.Position+Vector3.new(0,230,0),plot.Position)
    local tween = TweenService:Create(game.Workspace.Camera,TI,{CFrame = cf})
    tween:Play()
end

local plotsTable = findUnoccupiedPlots()

local index = 1

SelectedPlot.Value = plotsTable[index]
camTween(SelectedPlot.Value)

Left.MouseButton1Click:Connect(function()
    if Plots:FindFirstChild("Plot"..index-1) then
        index -= 1
    else
        index = 12
    end

    SelectedPlot.Value = plotsTable[index]
    camTween(plotsTable[index])

end)

Right.MouseButton1Click:Connect(function()
    if Plots:FindFirstChild("Plot"..index+1) then
        index += 1
    else
        index = 1
    end

    SelectedPlot.Value = plotsTable[index]
    camTween(plotsTable[index])

end)

Select.MouseButton1Click:Connect(function()
    local result = game.ReplicatedStorage.RequestPlot:InvokeServer(plotsTable[index])

    if result then
        Select.Text = ("成功")
    else
        Select.Text = ("错误")
    end

    tween2:Play()

    Camera.CameraType = Enum.CameraType.Custom
    PlotSelect.Enabled = false
    SelectedPlot.Value = nil

end)

game.Players.PlayerRemoving:Connect(function(player)

end)

Spawns 是我放在中心地块的部件。请帮帮我,因为我不知道该怎么办。

点赞
用户14901502
用户14901502

一个角色就是一个模型

你可以使用模型函数来移动玩家

local PLAYER_DATA = {
        SPAWN_PLACE = workspace,
        TIMEOUT = 30
}
local place = Vector3.new(0,0,0) ----要传送到的位置
local plr = game.Players.PlayerAdded:Wait() ---游戏中第一个玩家
local char = PLAYER_DATA.SPAWN_PLACE:WaitForChild(plr.Name,PLAYER_DATA.TIMEOUT)
if char then
       char:MoveTo(place)
end
2021-01-05 15:27:19