I was experimenting with Unity’s Physics.ContactModifyEvent and I noticed that every now and then contact pairs with contact points that are outside my helicopter’s rotor’s BoxCollider get generated (the magenta colored dots).
Most likely because you have a furiously rotating box collider xD
Collisions might be somewhat “predicted” according to the direction a given point in the collider is moving towards, but as it’s rotating, it doesn’t reach that “predicted” point.
For your specific case, in my opinion the best solution would be using a cylider-shaped collider (which doesn’t rotate). That would give you very precise collision points of the rotor with the environment, and you can then apply the reaction you want.
I see quite good contact points there actually! There are a box collider and a sphere collider attached to your object. That’s all that the physics engine “sees”, so it calculates the contact points accordingly.
You may use the Physics Debug view to better understand how your scene is “perceived” by the physics engine. Open the Physics Debug window (Window > Analysis > Physics Debug), then play your scene with both the Game and the Scene views visible at the same time.
There is!
Right-click in the Hierarchy window (or GameObject menu at the top).
3D Object > Cylinder.
Remove the Capsule Collider component.
Add a Mesh Collider component. Enable the Convex checkbox.
Remove the Mesh Renderer and Mesh Filter components.
So, it’s normal for the contact points to be generated outside the collider in question (the box collider around the rotor) and even jump that much depending on where you intersect with the other collider?
Bump as I still don’t have an answer to my question. Assuming that the magenta colored contact points are outside the helicopter’s BoxCollider on purpose: Why is that?