if you dont wanna rotate the gray paart just add an invisible part with same pos as the gray part. But make its front face look at the green part. Make the invis part the Primary Part
local grayPart = workspace.GrayPart -- gray part
local greenPart = workspace.GreenPart -- green part
local greenToGray = greenPart.CFrame:ToObjectSpace(grayPart.CFrame)
local grayToGreen = grayPart.CFrame:ToObjectSpace(greenPart.CFrame)
local function Target(pos) -- pass the position to target
local grayToPos = CFrame.lookAt(grayPart.Position,pos)
local greenPos = grayToPos*grayToGreen.p
local greenToPos = CFrame.lookAt(greenPos,pos)
local dir = grayToPos:Lerp(greenToPos,.5).Rotation
grayPart.CFrame = dir+grayPart.Position
greenPart.CFrame = grayPart.CFrame*grayToGreen
end
Target(workspace.Target.Position) -- how you use