Hey,
how to lerp in local space when object is moving? This code work fine on static objects, but when it moves (fast) then cameraPart on start is a little bit far away to playerPart. I tried calculate offset on moving object and applied to initialCamera variable but this not work as expected.
Testing Code
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local playerPart = Instance.new("Part")
playerPart.Size = Vector3.new(3, 3, 3)
playerPart.Position = Vector3.new(0, 2, 0)
playerPart.Anchored = true
playerPart.Parent = workspace
local cameraPart = Instance.new("Part")
cameraPart.Size = Vector3.new(1, 1, 1)
cameraPart.Position = Vector3.new(-20, 10, 0)
cameraPart.Anchored = true
cameraPart.Parent = workspace
local increment = 1 / 360
local alpha = 0
local initialCamera = cameraPart.CFrame
while alpha < 1 do
RunService.Heartbeat:Wait()
playerPart.Position = playerPart.Position + Vector3.new(1.5, 0, 0)
alpha = alpha + increment
local cameraStartPosition = CFrame.new(playerPart.CFrame.Position) * CFrame.new(-5, 5, 0)
local cameraFinishPosition = CFrame.new(cameraStartPosition.Position, playerPart.CFrame.Position)
cameraPart.CFrame = initialCamera:Lerp(cameraFinishPosition, alpha)
-- Refresh
initialCamera = cameraPart.CFrame
end