There may be other posts about this same topic, but I have tried all the solutions to no avail and searched around for an hour or so. I’m trying to move a tool to a part using Tool.Grip. I don’t understand CFrames that well for things like this, and I need some help with what I should be doing to the CFrame to get it to rotate properly and go to the part. Currently, it’s just a little off sometimes, but the rotation of my character affects the tool so sometimes it just launches into space or is just a little off.
I’ve been looking for a while and this looks like the best solution I found so far, but it still has some flaws and overall doesn’t work.
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Tool = Player.Character.Tool
local Character = Player.Character
local Target = workspace.Part
local Diff = Character.RightHand.CFrame:toObjectSpace(Target.CFrame)
warn(Diff)
Tool.Grip = Diff
It’s hard to position a Tool manually with .Grip, but you can use this plugin to make it really easy. I use it all the time, as it eliminates the hassle of having to do it yourself.
In order to get the position to match the position of your part based on Grip, you could do something like this:
Tool.Grip = CFrame.new(character.RightHand.Position - workspace.TargetPart.Position) --if you want to add orientation, you can add in the form of a rotation matrix as the second parameter.
It tried it, and it works fine. The only thing that causes it to be off, is that the character swings back and forth, due to my idle animation.
Definitely check out the documentation as lynnlo suggested.