im really bad at explaining stuff but ima try me best,
so, using a script you can change the cframe of the lantern model to match the handles cframe
ex script:
local tool = script.Parent :: Tool -- the equipped tool
local handle = tool.Handle :: BasePart -- the object you hold onto
local lantern = tool.Lantern :: Model -- the model of your lantern
--when the tool is equipped
tool.Equipped:Connect(function(Player : Player)
lantern:PivotTo(handle.CFrame)
end)
do you have a primary part set on the model in its properties
and if so, the rotation is due because the orientation of the handle and lantern primary part aren’t facing the same direction
we can account for this by only setting the lanterns position and keep its orientation the same
updated script:
local tool = script.Parent :: Tool -- the equipped tool
local handle = tool.Handle :: BasePart -- the object you hold onto
local lantern = tool.Lantern :: Model -- the model of your lantern
--when the tool is equipped
tool.Equipped:Connect(function(Player : Player)
lantern:PivotTo(CFrame.new(handle.Position,handle.Position+lantern.PrimaryPart.CFrame.LookVector))
--[[
lantern.PrimaryPart.CFrame.LookVector is the direction the lantern is facing, we can
use this to make the position goto the handles position while looking towards the
lanterns orginal front orientation
--]]
end)
--edited
If you want to simulate gravity but dont want to turn massless on, you could keep it massless but insert a force constraint moving downwards relative to world space.