Hello! I’m making building system, and I need detect some collisions. For that collisions I use 5 walls, which are created around plot. But the problem is in that PreviewPart have CanCollide == false, and walls can’t detect it. Can someone help me, and say, how I can enable collisions for PreviewPart?
There are several ways to detect parts ‘colliding’ without requiring them to have CanCollide enabled, but I suppose this should work.
for i, v in next, Part:GetTouchingParts() do if v.CanCollide == false then --// Whatever end end;
Can you explain me, what
next doing, please?
next() is just iterating through your table, it’s basically the same as
next(), also if the code sample I’ve provided above solved your problem, remember to select it as the ‘solution’.
oh, but there’s exist 1 problem - if part have CanCollide == false it just won’t detect it…
if v.CanCollide == false then --// Whatever end
won’t be triggered
Have you tried it already? (chars)
Yes, I’m tried it minute ago. It don’t work.
Then I’d suggest
local Region = Region3.new(-Part.Size, Part.Size); for i, v in next, workspace:FindPartsInRegion3(Region3) do if v.CanCollide == false then --// Whatever end; end;
(may have errors, been awhile since I’ve had to use
Region3 and not RotatedRegion lol.
sadly it don’t detect CanCollide == false parts too. =\
How are you checking if they are being detected?, are you using
print() in the for loop?
Yes, I’m getting parts in part / region3, and if array lenght > 0 (it find 1+ parts), then it returns false, otherwise it returns true. For each wall test, I
print(tostring(#Array) .. " Wall" .. tostring(i). When Part have CanCollide == false, #Array = 0, but if I set CanCollide = true, it works fine.
Stop. Maybe I found solution rn… I’ll try it.
for i, v in next, Part:GetTouchingParts() do if v.CanCollide == false then print(v) end end;
try this on it’s own.
This won’t return anything with CanCollide off.
Try this method
Please don’t use this anymore, review the solution to that post.
Other thing you cab use is GetPartsInBoundingBox
local List = game:GetPartsInBoundingBox(CFrame,BoxSize,Overlapparams)