BasePart:FindIntersectingParts( IgnoreList )

What this would do is simply check if there are any other parts intersecting with the part the method was called on, and return them. Parts inside of the ignorelist would be ignored.

This method would be amazingly useful when it comes to custom character movement; it’d allow for proper and efficient collision detection. I had an awesome tech demo set up for an anchored character that moved using CFrames and interpolation, but I had to scrap it because I couldn’t figure out how to do 3D collision detection.

look up hyperplane seperation axis theorum, or OBB-OBB collision test if you want to make your own, I have some scrap code laying around somewhere I could dig up if you wanted it

If you could dig up some working code, that’d help a lot, although I haven’t been able to understand the SAT. I just figured a method like this would be more efficient and support unions and other shapes.

I believe you would find this useful: Documentation - Roblox Creator Hub

You can easily make a region3 from the part and add the part to the ignore list to get the exact (I think) behavior you want.

I just remembered this won’t work because regions only have position and no CFrame so you cannot store rotation; sorry…

If you want the poor-man’s way and the parts intersect due to them moving into each other, then you could just watch all the Touch and TouchEnded events.

Do those fire when anchored parts intersect? I thought it only worked for parts moving with physics.

turns out I optimized my SAT collision test to be AABB-OBB, to save on calculations(apply a inverse coordinate space transform on both CFrames, so that one of them is aligned to world axes), but I’ll post anyway, as it is still a SAT collision test:

PS: leaker, I’m just trying to help someone out, please don’t share this, it would mean a lot to me, thanks!

be warned, it looks a bit obfuscated (worst than just being hard math) because I manually optimized large portions of the code to get it to run faster, I haven’t tested it in a while, but last I know, it works

I can see the uses of a fast, C-side implementation of a method like this. Support.

agreed… it was a pain to optimize my code by hand that much :frowning: and C-side would still run faster than my code

Weeve, is your code is answering the question of BasePart:FindIntersectingParts​( IgnoreList ) ?

Can you put it into a nice function for us newbies that don’t wanna/ can’t do it ourselves?