---
title: Contact
framework: realitykit
role: symbol
role_heading: Structure
path: realitykit/contact
---

# Contact

Events associated with collisions.

## Declaration

```swift
struct Contact
```

## Overview

Overview To subscribe to a collision event, import Combine, create a property of type Cancellable so that you maintain a reference to the subscription, then call subscribe(to:on:_:) or subscribe(to:on:componentType:_:) and provide a closure. The closure is passed an RealityKit/Scene/Event object that contains information relevant to the type of event you subscribed to. Here’s an example of subscribing to the collision begain event and retrieving the two entities involved in the collision:  import AppKit  import RealityKit  import Combine

class GameViewController: NSViewController {

@IBOutlet var arView: ARView!      var collisionSubscription:Cancellable?

override func awakeFromNib() {         let boxAnchor = try! Experience.loadBox()         arView.scene.anchors.append(boxAnchor)

collisionSubscription = arView.scene.subscribe(            to: CollisionEvents.Began.self,             on: boxAnchor        ) { event in            print("collision started")            let firstEntity = event.entityA            let secondEntity = event.entityB            // Take appropriate action...         }    }  } You can also create a function to respond to the event rather than a closure by using sink(receiveCompletion:receiveValue:). Here’s an example of using a function to respond to a collision event: import AppKit import RealityKit import Combine

class GameViewController: NSViewController {

@IBOutlet var arView: ARView!     var collisionSubscription:Cancellable?

override func awakeFromNib() {         let boxAnchor = try! Experience.loadBox()         arView.scene.anchors.append(boxAnchor)

collisionSubscription = arView.scene.publisher(for: CollisionEvents.Began.self,                                                        on:nil).sink(receiveValue: onCollisionBegan)     }

private func onCollisionBegan(_ event:                                   CollisionEvents.Began) {         print("collision started")         let firstEntity = event.entityA         let secondEntity = event.entityB         // Take appropriate action...     } }

## Topics

### Instance Properties

- [impulse](realitykit/contact/impulse.md)
- [impulseDirection](realitykit/contact/impulsedirection.md)
- [normal](realitykit/contact/normal.md)
- [penetrationDistance](realitykit/contact/penetrationdistance.md)
- [point](realitykit/contact/point.md)

## Relationships

### Conforms To

- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Collision-related notifications

- [CollisionEvents](realitykit/collisionevents.md)
