Need help with CFrame

How do I make a part do

  1. Spawn at character humanoidrootpart
  2. Move 40 studs infront of character humanoidrootpart
  3. look towards mouse position (while maintaining above two cframes)?

My attempt:


local Part = Instance.new("Part")
Part.CFrame = Character.HumanoidRootPart.CFrame * CFrame.new(0,0,-40) * CFrame.lookAt(Part.Position, MousePos) 

Problem: It does not do what I want.

local function setPosition(humanoidRootPart,mousePos,Part)
	Part.CFrame = CFrame.lookAt(humanoidRootPart.Position+humanoidRootPart.CFrame.LookVector*40,mousePos)
end

this should work