我正在制作一个使用 Humanoid.Seated 事件提供的数据的补间,我想让相机在坐下时移动到终点,但是,在他们坐起来后移回。我感觉问题出在零件信息上,但我可能是错的。
这是代码:
发送方/事件处理程序:
local camPart = script.Parent
local camEvent = game.ReplicatedStorage.CamEvent
local blueSeat = script.Parent.Parent.BlueSeat.Seat --the correct seat person should be in
local bluePlayerName = script.Parent.Parent.Buttons.BlueEnter.PlayerName --the supposed name of person
bluePlayerName:GetPropertyChangedSignal("Value"):Connect(function ()
if (bluePlayerName ~= "") then
local char = game.Workspace:FindFirstChild(bluePlayerName.Value,true)
local player = game.Players:GetPlayerFromCharacter(char)
char.Humanoid.Seated:Connect(function (isSeated,seat)
if (seat.Name == blueSeat.Name) then
camEvent:Fireclient(player,camPart,isSeated) --go to tween handler
end
end)
end
end)
接收器/补间处理程序:
local TweenService = game:GetService("TweenService")
local cam = game.Workspace.Camera
local partData
local tween
local length = 2
local tweenData = TweenInfo.new(
length,Enum.EasingStyle.Sine,Enum.EasingDirection.Out,true,0
)
script.Parent.OnClientEvent:Connect(function (camPart,isSeated) --receiver
partData = {
CFrame = camPart.CFrame
}
tween = TweenService:Create(cam,tweenData,partData)
if (isSeated == true) then
cam.CameraType = Enum.CameraType.Scriptable --remove control
tween:Play()
wait(length / 2)
tween:Pause() --stop at end point
elseif (isSeated == false) then
tween:Play() --go back/finish
wait(length / 2)
cam.CameraType = Enum.CameraType.Custom --give control back
end
end)