I'm experimenting with CFrame and tried storing a CFrame value to a table. I had struggles with it. How do you do it?
Here's my code and please answer with details. My code is some kind of detection. I think detection of which if a part went out of a certain area it will turn red, otherwise green.
BrickMode = true -- Just some kind of mode to find it using parts. I need to make invisible points without depending on bricks. Just CFrame points. model = nil axis = 1 neg = 0 if BrickMode == true then if workspace:FindFirstChild('SurfaceDetectionPoints') then model = workspace.SurfaceDetectionPoints else Instance.new("Model",workspace).Name = 'SurfaceDetectionPoints' model = workspace.SurfaceDetectionPoints end for o = 1,6 do newIns = Instance.new("Part",model) newIns.Color = Color3.new(0,1,0) newIns.Anchored = true newIns.Size = Vector3.new(0.2,0.2,0.2) newIns.Material = "Neon" newIns.CanCollide = false newIns.Name = "SURFACEDETECTIONPART" end end -- Creates an instance for keeping the parts while true do size = script.Parent.Size points = { script.Parent.Size.Z / 2, script.Parent.Size.Z / 2, script.Parent.Size.X / 2, script.Parent.Size.X / 2, script.Parent.Size.Y / 2, script.Parent.Size.Y / 2 } -- Above are points for simple surface detection. if BrickMode == true then newPart = model:GetChildren() end for i = 1,#points do invisPoints = {} -- setting cAxis = nil if axis == 1 then if neg == 0 then cAxis = Vector3.new(0,0,points[i]) else cAxis = Vector3.new(0,0,-points[i]) end elseif axis == 2 then if neg == 0 then cAxis = Vector3.new(points[i],0,0) else cAxis = Vector3.new(-points[i],0,0) end elseif axis == 3 then if neg == 0 then cAxis = Vector3.new(0,points[i],0) else cAxis = Vector3.new(0,-points[i],0) end end -- start if BrickMode == true then newPart[i].CFrame = CFrame.new(script.Parent.Position) *CFrame.fromOrientation(math.rad(script.Parent.Orientation.X),math.rad(script.Parent.Orientation.Y),math.rad(script.Parent.Orientation.Z)) *CFrame.new(cAxis) end table.insert(invisPoints,nil,{CFrame.new(script.Parent.Position) *CFrame.fromOrientation(math.rad(script.Parent.Orientation.X),math.rad(script.Parent.Orientation.Y),math.rad(script.Parent.Orientation.Z)) *CFrame.new(cAxis)}) -- Where it went down. <<<<<<<<<<<<<<<<<<< -- presetting if neg == 1 then if axis == 1 then axis = 2 elseif axis == 2 then axis = 3 elseif axis == 3 then axis = 1 end end if neg == 0 then neg = 1 else neg = 0 end end calcWidth = {left = workspace.Inside.Position.X + (workspace.Inside.Size.X/2), right = workspace.Inside.Position.X - (workspace.Inside.Size.X/2)} calcHeight = {up = workspace.Inside.Position.Y + (workspace.Inside.Size.Y/2), down = workspace.Inside.Position.Y - (workspace.Inside.Size.Y/2)} calcLength = {front = workspace.Inside.Position.Z + (workspace.Inside.Size.Z/2), back = workspace.Inside.Position.Z - (workspace.Inside.Size.Z/2)} --============BRICK MODE============-- if BrickMode == true then local pass = 0 local passes = {} region = Region3.new(Vector3.new(calcWidth.right,calcHeight.down,calcLength.back), Vector3.new(calcWidth.left,calcHeight.up,calcLength.front)) detect = workspace:FindPartsInRegion3(region) for _,Part in pairs(detect) do if Part.Name == 'SURFACEDETECTIONPART' then pass = pass + 1 end end if pass == 6 then for k = 1,#newPart do newPart[k].Color = Color3.new(0,1,0) end else for k = 1,#newPart do newPart[k].Color = Color3.new(1,0,0) end end else local passes = 0 for j = 1,#invisPoints do if invisPoints[j].X < calcWidth.left and invisPoints[j].X > calcWidth.right and invisPoints[j].Y < calcHeight.up and invisPoints[j].Y > calcHeight.down and invisPoints[j].Z < calcLength.front and invisPoints[j].Z > calcLength.back then passes = passes + 1 end end if passes == 6 then script.Parent.Color = Color3.new(0,1,0) else script.Parent.Color = Color3.new(1,0,0) end end --============BRICK MODE END============-- wait(0.01) -- for seeing the parts in a limited time. end
Thanks in advance.
11:53 PM 5/16/2018 Philippine Time
Good night.