事件订阅已添加到ARView的ARView的RealityKit中。
arView.scene.subscribe(to: CollisionEvents.Began.self) { event in
print("Some collision occured")
}Entities在scene中视觉上发生了碰撞,但是CollisionEvent没有被触发。下面是两个明显冲突的对象的示例层次结构:
__RKPhysics▿‘篮板’,孩子们:1
...⟐PhysicsMotionComponent
...⟐变换
...⟐CollisionComponent
...⟐SynchronizationComponent
...⟐PhysicsBodyComponent
...▿'simpBld_root‘:ModelEntity
......⟐变换
......⟐ModelComponent
......⟐SynchronizationComponent
用CollisionComponent
CollisionComponent(形状: RealityKit.ShapeResource,模式: RealityKit.CollisionComponent.Mode.default,过滤器:RealityKit.CollisionFilter(组: RealityKit.CollisionGroup(rawValue: 1),掩码: RealityKit.CollisionGroup(rawValue: 1)
ModelEntity ...⟐变换▿'ball‘
...⟐CollisionComponent
...⟐ModelComponent
...⟐SynchronizationComponent
...⟐PhysicsBodyComponent
用CollisionComponent
CollisionComponent(形状: RealityKit.ShapeResource,模式: RealityKit.CollisionComponent.Mode.default,过滤器:RealityKit.CollisionFilter(组: RealityKit.CollisionGroup(rawValue: 1),掩码: RealityKit.CollisionGroup(rawValue: 4294967295)
已将名为Entities的内容作为AnchorEntity的一部分添加到
let anchorEntity = AnchorEntity(anchor: anchor)
anchorEntity.addChild(backboardEntity)
anchorEntity.addChild(ballEntity)
arView.scene.anchors.append(anchorEntity)为什么没有CollisionEvents不被解雇?
发布于 2022-04-02 16:58:17
此代码不言自明:
import RealityKit
import Combine
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
var subscriptions: [Cancellable] = []
override func viewDidLoad() {
super.viewDidLoad()
let modelOne = ModelEntity(mesh: .generateSphere(radius: 0.04))
as (Entity & HasCollision & HasPhysicsBody)
let modelTwo = ModelEntity(mesh: .generateSphere(radius: 0.04))
as (Entity & HasCollision & HasPhysicsBody)
modelOne.position.y = 0.75
modelOne.physicsBody = .init()
modelOne.physicsBody?.mode = .dynamic
modelOne.generateCollisionShapes(recursive: false)
modelTwo.physicsBody = .init()
modelTwo.physicsBody?.mode = .static
modelTwo.generateCollisionShapes(recursive: false)
let sub = arView.scene.subscribe(to: CollisionEvents.Began.self,
on: modelOne) { _ in print("OCCURED!") }
subscriptions.append(sub)
let anchor = AnchorEntity()
anchor.addChild(modelOne)
anchor.addChild(modelTwo)
arView.scene.anchors.append(anchor)
}
}https://stackoverflow.com/questions/71718017
复制相似问题