- Home /
Collider Performance Question
Hey all.
I just have a simple question that I can't seem to find the answer to (maybe not looking very well).
If I have colliders that are not set to collide with anything at all, not each other, not the player, not anything, then:
Are those going to be doing per-frame calculations to detect collisions (I would assume no because there's nothing they can collide with).
Will Physics.Raycast still work against them if I test for that specific layer?
The context of this question is: I have a voxel game. And Mesh Colliders are terribly slow to update, so I took them out and added a system where box colliders surround the player where solid blocks exist. This is much more efficient.
However, I was using raycasting to place and delete blocks. I would cast a ray at the ground, it would hit the mesh collider, I'd get the normal and use that to figure out where to put the block.
I can't do that anymore, because those blocks no longer have colliders. There are only colliders around the player. So I figured I'd write my own very simple ray casting system that creates a ray and uses Ray.GetPoint() to advance along it 1 unit at a time, checking each spot for a solid block. If it finds one, it returns that position and I can either delete it or go back 1 unit to place a block.
The problem here is this method is not accurate. Often, the block modified is the neighbor block from the one I clicked. And I'm not entirely sure how to make it accurate.
So I could put box colliders around every block. But that's a LOT of box colliders, and given that they're doing per-frame calculations, I can't afford to do that.
But, if I can put a LOT of box colliders that aren't doing per-frame calculations, then it might be more do-able. So I need to know the answer to this question to figure out if I can do that.
Though it might be pretty bad on memory usage...
Answer by Krizzen · Jun 05, 2014 at 11:21 PM
I don't know how Unity handles things internally, but I imagine they spatially partition the world using octrees. They probably have something internally like Leaf->HasAwakePhysicsObjects. Any decently fast physics system will have a "sleep" state for objects at rest.
I'd really like to know how Unity partitions the world for physics, since that could ultimately answer your question.
Your answer
![](https://koobas.hobune.stream/wayback/20220613150859im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How do I calculate this voxel script so I don't get a out of range error? 2 Answers
Voxel performance 1 Answer
Box Collider Game Performance 1 Answer