Lab 021 – Collision Triggers with AnchorEntity Hands?
Do collision triggers fire from hand anchored entities without ARKit?
In RealityKit, we can use AnchorEntity to attach items to our hands. I was curious to find out if collision triggers would still fire without using ARKit or Spatial Tracking Session. Short answer: No.
Video demo
Full Lab Code
struct Lab021: View {
@State var subject: Entity?
@State var collisionBeganUnfiltered: EventSubscription?
@State var leftHandTrackedEntity: Entity = {
let handAnchor = AnchorEntity(.hand(.left, location: .palm))
return handAnchor
}()
var body: some View {
RealityView { content in
if let scene = try? await Entity(named: "Lab020Scene", in: realityKitContentBundle) {
content.add(scene)
content.add(leftHandTrackedEntity)
subject = scene.findEntity(named: "StepSphereBlue")
collisionBeganUnfiltered = content.subscribe(to: CollisionEvents.Began.self) { collisionEvent in
print("Collision unfiltered \(collisionEvent.entityA.name) and \(collisionEvent.entityB.name)")
collisionEvent.entityA.components[ParticleEmitterComponent.self]?.burst()
}
}
}
.gesture(tapGesture)
.modifier(DragGestureImproved())
}
var tapGesture: some Gesture {
TapGesture(count: 2)
.targetedToAnyEntity()
.onEnded { value in
let selected = value.entity
guard (selected.name == "StepSphereRed") else {return}
if(value.entity.parent == leftHandTrackedEntity) {
leftHandTrackedEntity.parent?.addChild(selected)
leftHandTrackedEntity.removeChild(selected)
selected.position = [-0.3, 1, -1]
} else {
leftHandTrackedEntity.addChild(selected)
selected
.setPosition(
[0, 0.1, 0],
relativeTo: leftHandTrackedEntity
)
}
}
}
}Support our work so we can continue to bring you new examples and articles.
Download the Xcode project with this and many more labs from Step Into Vision.

Follow Step Into Vision