Post

Replies

Boosts

Views

Activity

VisionOS RealityView 中全景球体 中放入实体后控制问题 补充
在全模式下, 我创建一个球体 半径 10 ,给球添加 CollisionComponent 与 InputTargetComponent 我接着创建一个0.2 正方体 也添加了 上面的两组件 又添加。一个 attrach 的附件信息 代码如下 RealityView{content,attachments in let meshgenerate = MeshResource.generateSphere(radius: 10) let collisionShape = ShapeResource.generateSphere(radius: 10 ) var sp = ModelEntity(mesh: meshgenerate) sp.components.set(CollisionComponent(shapes: [collisionShape])) sp.components.set(InputTargetComponent()) sp.transform.scale *= .init(-1, 1, 1) sp.name = "sp" content.add(sp) let ont = ModelEntity(mesh: MeshResource.generateBox(size: 0.2) ) ont.components.set(CollisionComponent(shapes: [ShapeResource.generateBox(size: .init(x: 0.2, y: 0.2, z: 0.2))])) ont.components.set(InputTargetComponent()) ont.name = "ont" ont.position = .init(x: 0, y: 0, z: -2) content.add(ont) if let stack = attachments.entity(for: "aid") { stack.name = "sssssss" stack.setPosition(.init(x: 0, y: 1.5, z: -1), relativeTo: nil) // stack.generateCollisionShapes(recursive: false) //stack.components.set(InputTargetComponent()) content.add(stack) } } attachments: { let rostion = Rotation3D(angle: Angle2D(degrees: 30), axis: .x) Attachment(id: "aid") { Button { print("sss","Button") } label: { Text("New Color") .font(.extraLargeTitle) .padding(40) } .background(.yellow) } } .gesture(TapGesture().targetedToAnyEntity().onEnded({ value in print("sss" ,"TapGesture",value.entity.name) //openwind(id: "main") })) 只有球台可以出发 gesture 其他的 EntityModel 及 附加的信息 都无法触发 gesture 我知道问题出在 其他实体放到了球内,同时因为球体有 InputTargetComponent 组件 如果我求出 球体的 InputTargetComponent 组件 就可以出发其他的 gesture 我想 如果不删除 InputTargetComponent 他的附件信息及实体也能触发gesture,应该如何解决
0
0
324
Dec ’23
VisionOS RealityView 中全景球体 中放入实体后控制问题
在 Full 模式下, 我创建一球体 半径 10 ,给球添加 CollisionComponent 与 InputTargetComponent 我接着创建一个0.2 正方体 也添加了 上面的两组件 又添加。一个 attrach 的附件信息 代码如下 ` RealityView{content,attachments in let meshgenerate = MeshResource.generateSphere(radius: 10) let collisionShape = ShapeResource.generateSphere(radius: 10 ) var sp = ModelEntity(mesh: meshgenerate) sp.components.set(CollisionComponent(shapes: [collisionShape])) sp.components.set(InputTargetComponent()) sp.transform.scale *= .init(-1, 1, 1) sp.name = "sp" content.add(sp) let ont = ModelEntity(mesh: MeshResource.generateBox(size: 0.2) ) ont.components.set(CollisionComponent(shapes: [ShapeResource.generateBox(size: .init(x: 0.2, y: 0.2, z: 0.2))])) ont.components.set(InputTargetComponent()) ont.name = "ont" ont.position = .init(x: 0, y: 0, z: -2) content.add(ont) if let stack = attachments.entity(for: "aid") { stack.name = "sssssss" stack.setPosition(.init(x: 0, y: 1.5, z: -1), relativeTo: nil) // stack.generateCollisionShapes(recursive: false) //stack.components.set(InputTargetComponent()) content.add(stack) } } attachments: { let rostion = Rotation3D(angle: Angle2D(degrees: 30), axis: .x) Attachment(id: "aid") { Button { print("sss","Button") } label: { Text("New Color") .font(.extraLargeTitle) .padding(40) } .background(.yellow) } } .gesture(TapGesture().targetedToAnyEntity().onEnded({ value in print("sss" ,"TapGesture",value.entity.name) //openwind(id: "main") })) 只有球台可以出发 gesture 其他的 EntityModel 及 附加的信息 都无法触发 gestrue 我知道问题出在 其他实体放到了球内,同时因为球体有 InputTargetComponent 组件我如果想 不求出 InputTargetComponent 情况下 希望他的附件信息也能触发gesture,应该如何解决
0
0
485
Dec ’23