Here’s an updated version of your code can fixes the issue
while true do
local pivotPosition = script.Parent:GetPivot().Position
local targetPosition = workspace.Part.Position
local lookVector = (targetPosition - pivotPosition).Unit
local upVector = Vector3.new(0, 1, 0) -- Specify the desired up vector here
local lookAtCFrame = CFrame.lookAt(pivotPosition, pivotPosition + lookVector, upVector)
script.Parent.Parent.TurretBody.Barrel.C1 = lookAtCFrame
task.wait()
end
while true do
local pivotPosition = script.Parent:GetPivot().Position
local targetPosition = workspace.Part.Position
-- Adjust targetPosition to a safe distance away from other objects
-- Calculate the direction vector and distance to the target
local direction = targetPosition - pivotPosition
local distance = direction.Magnitude
-- Specify a maximum distance to prevent rushing into objects
local maxDistance = 5
-- Check if the distance exceeds the maximum
if distance > maxDistance then
targetPosition = pivotPosition + direction.Unit * maxDistance
end
local lookVector = (targetPosition - pivotPosition).Unit
local upVector = Vector3.new(0, 1, 0) -- Specify the desired up vector here
local lookAtCFrame = CFrame.lookAt(pivotPosition, pivotPosition + lookVector, upVector)
script.Parent.Parent.TurretBody.Barrel.C1 = lookAtCFrame
task.wait()
end
local Barrel =script.Parent.Parent.TurretBody.Barrel
while true do
task.wait()
Barrel.C1 = Barrel.Part1.CFrame:ToObjectSpace(CFrame.lookAt(Barrel.Part0.CFrame.Position, workspace.Part.Position))
end
I’m on mobile so you’ll need to add your own edits.