How to set collision of a part?

How to fix the problem below:

  1. The object that is following my cursor is halfway through the objects. It has a very small collision hitbox.
  2. The object goes near the camera when equipped.

Here is the code relevant to this.

local RunService = game:GetService("RunService")
local Player = game.Players.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local mouse = Player:GetMouse()

-- Variables
local ghostConnection
local ghost

Character.ChildAdded:Connect(function(child)
	if not child:isA("Tool") then return end
	if not child:FindFirstChild("ConstructPart") then return end
	
	local tempFolder = workspace:FindFirstChild(Player.UserId .. "_TEMP")
	ghost = child.Handle:Clone()
	ghost.Name = "GhostObject"
	ghost.Parent = tempFolder	
	
	ghostConnection = RunService.RenderStepped:Connect(function()
		if mouse.move then
			ghost.Orientation = Vector3.new(0, 0, 0)
			ghost.Position = mouse.Hit.p
		end
	end)
end)

Character.ChildRemoved:Connect(function(child)
	ghost:Destroy()
	ghostConnection:Disconnect()
end)

Sample Video:

i dont have any idea on an easier way to do this, but when setting the position of the block, i guess you could blockcast (raycast in shape of a cube, workspace:Blockcast) and using RayParams to move it at the position of the result

You can use mouse.TargetFilter to have an instance and its descendants to be ignored while calculating mouse.Hit and mouse.Target to fix the second problem.
See here: