次の階層のルートに generateCollisionShapes() を適用すると、何も起こりません。ルート エンティティの「衝突」コンポーネントはまだゼロです。
ルート エンティティ クラスは次のようになります。
class SomeEntity: Entity, HasAnchoring, HasModel, HasCollision
子エンティティは .usdz ファイルから読み込まれ、その階層は次のとおりです: Entity -> [ModelEntity, ModelEntity]
したがって、最終的な階層は次のとおりです。
SomeEntity -> Entity -> [ModelEntity, ModelEntity].
ここで、次の行を適用すると、SomeEntity の衝突コンポーネントは nil のままになり、次のログ メッセージが表示されます。
someEntity.generateCollisionShapes(recursive: true)
arView.scene.addAnchor(someEntity)
arView.installGestures([.all], for: someEntity)
ログ メッセージは次のとおりです。[衝突] 不正なパラメーター (球体半径)、値 = 0.000000、形状作成に渡されました。
- モデルコンポーネントのないエンティティが再帰操作を壊すようです
編集 1: コードまたは Reality Composer で作成されたモデル エンティティに適しています。モデル階層が重要な役割を果たしているように見えるため、USDZ ファイルから読み込まれたエンティティの動作は予想外です。