Untitled
unknown
lua
10 months ago
2.8 kB
8
Indexable
local RunService = game:GetService("RunService")
local PlayersService = game:GetService("Players")
local driverSeat = script.Parent.Parent.DriverSeat
local SequenceTime = 10
local distance = 1000
local currentSequenceTime = 0
local sequenceCompleted = true
local forceEndSequence = false
local goingBackwardS = false
local function getSequencePoint(t: number)
return 1 - ((math.cos(t * math.pi * 2) / 2) + 0.5)
end
local modelOriginalCFrame: CFrame = nil
local previousSequenceTime = 0
local goodValues = false
local hitboxObject = script.Parent.Parent.HitboxObject
local function runServiceTask(deltaTime: number)
if not sequenceCompleted then
local sequenceValue = getSequencePoint(currentSequenceTime / SequenceTime)
driverSeat.idleSound.PlaybackSpeed = 1 + (sequenceValue * 1.25)
--driverSeat.idleSound.Volume =
if currentSequenceTime == SequenceTime then
sequenceCompleted = true
return
end
local character = PlayersService.LocalPlayer.Character
if character ~= nil and character.HumanoidRootPart ~= nil and goodValues then
local performCharacterMove = false
for _,v in workspace:GetPartsInPart(hitboxObject) do
if (v == character.HumanoidRootPart) then
performCharacterMove = true
break
end
end
if performCharacterMove and not (character.Humanoid :: Humanoid).Sit then
local zOffset = distance * (getSequencePoint((currentSequenceTime / SequenceTime) / 2) - getSequencePoint((previousSequenceTime / SequenceTime) / 2)) * (goingBackwardS and -1 or 1)
--print(xOffset)
local characterPivot = character:GetPivot()
--local pivotOffset = characterPivot:ToWorldSpace(CFrame.new(xOffset, 0, 0))
--print(pivotOffset.Position)
--local pivotOffseted = characterPivot * pivotOffset
--print(pivotOffseted)
character:PivotTo(characterPivot + Vector3.new(0, 0, zOffset))
end
end
previousSequenceTime = currentSequenceTime
currentSequenceTime += deltaTime
currentSequenceTime = math.clamp(currentSequenceTime, 0, SequenceTime)
script.Parent.Parent:PivotTo(modelOriginalCFrame * CFrame.new(distance * getSequencePoint((currentSequenceTime / SequenceTime) / 2) * (goingBackwardS and -1 or 1), 0, 0))
--for i,v in partsToMove do
-- v.CFrame = partsToMoveOriginalPositions[i] * CFrame.new(distance * getSequencePoint((currentSequenceTime / SequenceTime) / 2), 0, 0)
--end
--print(sequenceValue)
--print(currentSequenceTime)
goodValues = true
end
end
RunService.PreSimulation:Connect(runServiceTask)
script.Parent.AnimateTrain.OnClientEvent:Connect(function(goingBackward: boolean)
modelOriginalCFrame = script.Parent.Parent:GetPivot()
goingBackwardS = goingBackward
currentSequenceTime = 0
sequenceCompleted = false
goodValues = false
end)
Editor is loading...
Leave a Comment