# BallBounce

## Overview

`BallBounce` is a data type that holds the state of a ball when it collides (bounces) with a surface. It provides information necessary for analyzing bounce events, such as the direction/speed/spin and angular velocity just before collision, the time of collision, the changes in direction/speed/spin after collision, and the collision point/normal. It is used for displaying replays, tuning physics parameters, and debugging collision responses.

## Constructors

## Properties

### AngularVelocity

`Vector3`

The angular velocity vector just before the collision (rad/s). The direction is the axis of rotation, and the magnitude is the angular speed.

#### Code Samples

```lua
local bounce = bounce
print("Incoming ang vel:", bounce.AngularVelocity)
```

### BouncedAngularVelocity

`Vector3`

The angular velocity vector after the collision (rad/s).

#### Code Samples

```lua
local bounce = bounce
print("Outgoing ang vel:", bounce.BouncedAngularVelocity)
```

### BouncedDirection

`Vector3`

The unit vector of the movement direction after the collision.

#### Code Samples

```lua
local bounce = bounce
print("Outgoing dir:", bounce.BouncedDirection)
```

### BouncedPosition

`Vector3`

The position of the collision point.

#### Code Samples

```lua
local bounce = bounce
print("Hit position:", bounce.BouncedPosition)
```

### BouncedSpeed

`number`

The speed magnitude after the collision (cm/s).

#### Code Samples

```lua
local bounce = bounce
print("Outgoing speed (cm/s):", bounce.BouncedSpeed)
```

### BouncedSpin

`number`

The spin after the collision (angular velocity magnitude, rad/s).

#### Code Samples

```lua
local bounce = bounce
print("Outgoing spin (rad/s):", bounce.BouncedSpin)
```

### BouncedTime

`number`

The time when the bounce occurred (seconds). This is the time value on the simulation timeline.

#### Code Samples

```lua
local bounce = bounce
print("Bounce time (s):", bounce.BouncedTime)
```

### CFrame

`CFrame`

The ball's posture based on the collision point (based on `HitPosition + HitRotation`). Includes both position and rotation.

#### Code Samples

```lua
local bounce = bounce -- BallBounce received from the simulator
print("Bounce CFrame:", bounce.CFrame)
```

### Direction

`Vector3`

The unit vector of the movement direction just before the collision.

#### Code Samples

```lua
local bounce = bounce
print("Incoming dir:", bounce.Direction)
```

### ImpactNormal

`Vector3`

The normal vector of the collision surface (perpendicular to the surface).

#### Code Samples

```lua
local bounce = bounce
print("Impact normal:", bounce.ImpactNormal)
```

### ImpactPoint

`Vector3`

The world coordinates of the collision contact point.

#### Code Samples

```lua
local bounce = bounce
print("Impact point:", bounce.ImpactPoint)
```

### IsSliding

`boolean`

Indicates whether the ball is sliding along the surface upon collision.

#### Code Samples

### Speed

`number`

The speed magnitude just before the collision (cm/s).

#### Code Samples

```lua
local bounce = bounce
print("Incoming speed (cm/s):", bounce.Speed)
```

### Spin

`number`

The spin just before the collision (angular velocity magnitude, rad/s).

#### Code Samples

```lua
local bounce = bounce
print("Incoming spin (rad/s):", bounce.Spin)
```

### StartPos

`Vector3`

The start position of the bounce simulation segment.

#### Code Samples

```lua
local bounce = bounce
print("Start pos:", bounce.StartPos)
```

## Methods

## Events

## See also

{% content-ref url="/pages/ZaoG57umzS7C4yIBXybF" %}
[SimulationBall](/development/api-reference/classes/simulationball.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.overdare.com/development/api-reference/datatype/ballbounce.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
