# Sources & Listeners

Some targets (in particular the Camera) can be shaken indirectly as if they were hit by a shockwave. The shake is then split into two separate components:

**Shake source**: Emits a shake in all directions around it, similar to a sound.

**Shake listener**: Receives shakes from all directions, similar to a microphone. The intensity of a shake depends on the distance of the listener to the source.

{% hint style="info" %}
There can be multiple listeners in the scene (for example 1 per Camera). This scenario is explored in more detail in [Multi-Camera](/shakefx/core/multi-camera.md).
{% endhint %}

## Camera

Here's how this looks for a Camera shake target:

A **Source** component is placed on the origin of the shake:

<figure><img src="/files/d5yNVQ2Ig5NXL2nz6VeL" alt="" width="375"><figcaption></figcaption></figure>

A **Listener** component is placed on the Camera game object:

<figure><img src="/files/QEoClnTPtziQXtRy3c5w" alt="" width="375"><figcaption></figcaption></figure>

## Attenuation Settings Asset

Attenuation Settings are defined in an asset that can be re-used across shake source components:

<figure><img src="/files/7l94Q1pa1oqWl7v62Yu8" alt="" width="375"><figcaption></figcaption></figure>

**Type:** Select the algorithm to use for shake attenuation based on the distance between the source and the listener. Always applied between **MinDistance** and **MaxDistance**.

* **Linear:** Intensity decreases linearly.
* **Exponential:** Intensity decreases using an exponential curve controlled by **Exponent**.
* **Custom:** Intensity is determined by a user-defined curve. The curve is evaluated using normalized distance for the X axis (0 = **MinDistance**, 1 = **MaxDistance**).

**Min Distance:** The distance at which the shake reaches full intensity.

**Max Distance:** The distance at which the shake reaches zero intensity.

**Exponent:** Higher values produce a steeper drop-off.


---

# 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://fx-engine.gitbook.io/shakefx/core/sources-and-listeners.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.
