Working on this part placement Script;
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local ClientPart = workspace.ClientMouseIgnore:WaitForChild("ClientPart")
local ClientPart2 = workspace.ClientMouseIgnore:WaitForChild("ClientPart2")
local ClientPart3 = workspace.ClientMouseIgnore:WaitForChild("ClientPart3")
local MouseRaycastParams = RaycastParams.new()
MouseRaycastParams.FilterType = Enum.RaycastFilterType.Exclude
local ClientMouseIgnoreFolder = workspace.ClientMouseIgnore
local MathUsed = math.round --function(num) return num end
local TweenService = game:GetService("TweenService")
local BlockTweenInfo = TweenInfo.new(0.030, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut,0,false,0)
local function UpdatePosition(NewCF)
local BlockMoveTween = TweenService:Create(ClientPart, BlockTweenInfo, {CFrame = NewCF})
BlockMoveTween:Play()
end
local function OrientationToCFrameOrientation(Orientation : Vector3)
return CFrame.fromOrientation(math.rad(Orientation.X),math.rad(Orientation.Y),math.rad(Orientation.Z))
end
local function ReworkPosition(c1 : CFrame, v2 : Vector3)
return CFrame.new(
Vector3.new(
if math.floor(math.abs(v2.X)) ~= 0 then v2.X else math.round(c1.Position.X),
if math.floor(math.abs(v2.Y)) ~= 0 then v2.Y else math.round(c1.Position.Y),
if math.floor(math.abs(v2.Z)) ~= 0 then v2.Z else math.round(c1.Position.Z)
)
)
end
while task.wait() do
local Origin = Mouse.UnitRay.Origin
local Direction = Mouse.UnitRay.Direction
MouseRaycastParams.FilterDescendantsInstances = {ClientMouseIgnoreFolder:GetChildren(), LocalPlayer.Character}
local V1 = workspace:Raycast(Origin, Direction*1000, MouseRaycastParams)
if V1 and V1.Position and V1.Instance then
local V1Pos : Vector3 = V1.Position
local V1HitPart : Part = V1.Instance
local v1o = V1HitPart.Orientation
local objectspacecf = V1HitPart.CFrame:ToObjectSpace(CFrame.new(V1Pos))
print(V1HitPart.CFrame:ToObjectSpace(CFrame.new(V1Pos)).Position, V1HitPart, V1Pos)
local NewIdea = (V1HitPart.Size/2) * V1.Normal
local NewObjectCF = ReworkPosition(objectspacecf, NewIdea)
--print("----------")
--print(NewIdea)
-- print(objectspacecf.Position)
--print(NewObjectCF.Position)
--print("----------")
ClientPart.CFrame = V1HitPart.CFrame * objectspacecf
ClientPart2.CFrame = V1HitPart.CFrame * NewObjectCF
end
end
and for some reason it only works if the object is basically unrotated
it working (Focus on the blue part):
and this part is rotated 90 degrees (focus on the blue part again):
it just kinda doesnt work for some reason and im not sure why but it has to deal with the orientation and ToObjectSpace from my testing im pretty sure