@@ -156,7 +156,8 @@ public override void OnAfterImportScene(GLTFScene scene, int sceneIndex, GameObj
156156
157157 for ( int i = 0 ; i < _selectableOrHoverableObjects . Count ; i ++ )
158158 {
159- AddCollidersToChildrenOfInteractableNode ( _selectableOrHoverableObjects [ i ] ) ;
159+ AddCollidersToChildSkinnedMeshRenderers ( _selectableOrHoverableObjects [ i ] ) ;
160+ AddCollidersToChildMeshRenderers ( _selectableOrHoverableObjects [ i ] ) ;
160161 }
161162
162163 try
@@ -205,7 +206,28 @@ public override void OnAfterImportScene(GLTFScene scene, int sceneIndex, GameObj
205206 }
206207 }
207208
208- private void AddCollidersToChildrenOfInteractableNode ( GameObject nodeObject )
209+ private void AddCollidersToChildSkinnedMeshRenderers ( GameObject nodeObject )
210+ {
211+ var smrs = nodeObject . GetComponentsInChildren < SkinnedMeshRenderer > ( ) ;
212+
213+ if ( smrs . Length <= 0 )
214+ return ;
215+
216+ GameObject go ;
217+
218+ for ( int i = 0 ; i < smrs . Length ; i ++ )
219+ {
220+ go = smrs [ i ] . gameObject ;
221+
222+ if ( ! go . TryGetComponent ( out Collider collider ) )
223+ {
224+ var mc = go . AddComponent < MeshCollider > ( ) ;
225+ mc . sharedMesh = smrs [ i ] . sharedMesh ;
226+ }
227+ }
228+ }
229+
230+ private void AddCollidersToChildMeshRenderers ( GameObject nodeObject )
209231 {
210232 var meshFilters = nodeObject . GetComponentsInChildren < MeshFilter > ( ) ;
211233
@@ -219,7 +241,10 @@ private void AddCollidersToChildrenOfInteractableNode(GameObject nodeObject)
219241 go = meshFilters [ i ] . gameObject ;
220242
221243 if ( ! go . TryGetComponent ( out Collider collider ) )
222- go . AddComponent < BoxCollider > ( ) ;
244+ {
245+ var mc = go . AddComponent < MeshCollider > ( ) ;
246+ mc . sharedMesh = meshFilters [ i ] . sharedMesh ;
247+ }
223248 }
224249 }
225250 }
0 commit comments