# Pheasy

![](https://2698598769-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYpeL-Cll-FXMj9b3XC-887967055%2Fuploads%2FmsUJtUiJwntDk5OeULax%2Fpheasy.png?alt=media\&token=e0560f36-f7d3-4bad-8d05-5f1ca83d5b23)

## Introduction

Pheasy component handles physics constraints, collision/trigger detection and stability for a single Rigidbody.

## Variables

* **Rb:** Rigidbody that this Pheasy is attached to. This reference is automatically set in Awake function.
* **Center Of Mass:** Transform that will be used as center of mass. If null, a Transform will be created representing the actual center of mass of the object.
* **Targets:** List of constraints to which the Rigidbody is subjected.
* **Colliders:** List of colliders of the Rigidbody.
* **Collision Notifier:** Component responsible for detecting collisions witht he Rigidbody. If null, a CollisionNotifier will be created.
* **Trigger Notifiers:** List of components responsible for handling triggers.

#### Stability

* **Safe Mode:** If enabled, the following variables will be applied.
* **Gradual Mode:** If enabled, when the joint is created, maximum forces in joint drives will grow with time until reaching their final values.
* **Max Velocity:** Maximum velocity at which the Rigidbody can move. If greater, `Rigidbody.velocity` will be clamped to this value.
* **Max Angular Velocity:** Maximum angular velocity at which the Rigidbody can move. If greater, `Rigidbody.angularVelocity` will be clamped to this value.
* **Max Depenetration Velocity:** Maximum velocity at which the Rigidbody can move out of colliding state. This value will be assigned to `Rigidbody.maxDepenetrationVelocity`.
* **Max Error Allowed:** `TargetConstraint.error` from which Rigidbody velocity will be set to 0. `TargetConstraint.error` is the distance between `TargetConstraint.anchor` and `TargetConstraint.connectedAnchor`.&#x20;

#### Connections

* **Ignore Collisions On Start:** If enabled, Rigidbody will ignore collisions with Rigidbodies listed in `Pheasy.relations`.
* **Relations:** List of Rigidbodies (with Pheasy component attached) that are related to this Rigidbody.

#### Debug

* **Axis:** Prefab that will be instantiated and moved to anchor and connected anchor of each target constraint.
* **Axis Scale:** Value that will be applied to each local scale axis of the instantiated axes.
* **Edit Mode:** If enabled, some constraint variables can change in runtime. This option may affect performance. The variables that could change in runtime are:
  * `TargetConstraint.anchor.`
  * `TargetConstraint.connectedBody.`
  * `TargetConstraint.axis.`
  * `TargetConstraint.settings.linearMotion.`
  * `TargetConstraint.settings.angularMotion.`
  * `TargetConstraint.settings.motionDrive.`
  * `TargetConstraint.settings.angularDrive.`
  * `TargetConstraint.settings.collideWithConnectedRb.`
  * `TargetConstraint.keepAxisRelativeToObject.`
* **Ignoring:** List of colliders which collisions are being ignored.

#### Events

* **On Init:** Invoked when the Awake function of this Pheasy component is completed.
