> For the complete documentation index, see [llms.txt](https://kinematicsoup.gitbook.io/reactor/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinematicsoup.gitbook.io/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksrigidbody2dview.md).

# Class ksRigidBody2DView

Namespace: [KS.Reactor.Server](/reactor/api-reference/ks.reactor.server.md)\
Assembly: KSReactor.dll

A 3D rigid body with movement constrained to 2D using a 2D API. When attached to entities, it allows the entity to be controlled by the physics simulation with its properties such as mass, drag, and velocity. If isKinematic is enabled, forces, collisions or joints will not affect the rigidbody, but it will push regular dynamic actors out of the way when moved.

```csharp
public class ksRigidBody2DView : ksBaseRigidBody, ksScript<ksIServerEntity, ksServerEntityScript>.IInternals, ksIRigidBody2D
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) â† ksScript\<ksIServerEntity, ksServerEntityScript> â† [ksServerEntityScript](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md) â† [ksBaseRigidBody](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md) â† [ksRigidBody2DView](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksrigidbody2dview.md)

#### Implements

ksScript\<ksIServerEntity, ksServerEntityScript>.IInternals, ksIRigidBody2D

#### Inherited Members

[ksBaseRigidBody.DefaultMode](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_DefaultMode), [ksBaseRigidBody.m\_kinematicMotionBodies](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_m_kinematicMotionBodies), [ksBaseRigidBody.m\_inKinematicList](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_m_inKinematicList), [ksBaseRigidBody.Attached()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Attached), [ksBaseRigidBody.Detached()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Detached), [ksBaseRigidBody.PhysXRigidBody](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_PhysXRigidBody), [ksBaseRigidBody.Mass](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Mass), [ksBaseRigidBody.Drag](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Drag), [ksBaseRigidBody.AngularDrag](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_AngularDrag), [ksBaseRigidBody.AddForceAtPosition(ksVector3, ksVector3, ksForceMode)](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_AddForceAtPosition_KS_Reactor_ksVector3_KS_Reactor_ksVector3_KS_Reactor_ksForceMode_), [ksBaseRigidBody.AddExplosiveForce(ksVector3, float, float, ksMath.Interpolation, float, ksForceMode, List\<ksCollider>)](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_AddExplosiveForce_KS_Reactor_ksVector3_System_Single_System_Single_KS_Reactor_ksMath_Interpolation_System_Single_KS_Reactor_ksForceMode_System_Collections_Generic_List_KS_Reactor_Server_ksCollider__), [ksBaseRigidBody.ClearForce()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_ClearForce), [ksBaseRigidBody.ClearTorque()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_ClearTorque), [ksBaseRigidBody.IsKinematic](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_IsKinematic), [ksBaseRigidBody.UseGravity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_UseGravity), [ksBaseRigidBody.CollisionDetectionMode](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_CollisionDetectionMode), [ksBaseRigidBody.Constraints](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Constraints), [ksBaseRigidBody.MaxLinearSpeed](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_MaxLinearSpeed), [ksBaseRigidBody.MaxAngularSpeed](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_MaxAngularSpeed), [ksBaseRigidBody.MaxDepenetrationSpeed](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_MaxDepenetrationSpeed), [ksBaseRigidBody.SleepThreshold](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_SleepThreshold), [ksBaseRigidBody.SolverIterations](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_SolverIterations), [ksBaseRigidBody.SolverVelocityIterations](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_SolverVelocityIterations), [ksBaseRigidBody.IsSleeping](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_IsSleeping), [ksBaseRigidBody.Sleep()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Sleep), [ksBaseRigidBody.WakeUp()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_WakeUp), [ksBaseRigidBody.AutoCalculateInertiaTensor](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_AutoCalculateInertiaTensor), [ksBaseRigidBody.InertiaTensor](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_InertiaTensor), [ksBaseRigidBody.InertiaTensorRotation](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_InertiaTensorRotation), [ksBaseRigidBody.AutoCalculateCenterOfMass](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_AutoCalculateCenterOfMass), [ksBaseRigidBody.CenterOfMass](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_CenterOfMass), [ksBaseRigidBody.WorldCenterOfMass](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_WorldCenterOfMass), [ksBaseRigidBody.InertiaTensorDirty](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_InertiaTensorDirty), [ksBaseRigidBody.CenterOfMassDirty](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_CenterOfMassDirty), [ksBaseRigidBody.MarkMassPropertiesDirty(bool, bool)](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_MarkMassPropertiesDirty_System_Boolean_System_Boolean_), [ksBaseRigidBody.BuildMassProperties()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_BuildMassProperties), [ksBaseRigidBody.Clone()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Clone), [ksBaseRigidBody.ApplyKinematicMotion()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_ApplyKinematicMotion), [ksServerEntityScript.Entity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Entity), [ksServerEntityScript.Room](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Room), [ksServerEntityScript.Time](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Time), [ksServerEntityScript.Physics](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Physics), [ksServerEntityScript.Properties](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Properties), [ksServerEntityScript.Transform](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Transform), [ksServerEntityScript.Transform2D](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Transform2D), ksScript\<ksIServerEntity, ksServerEntityScript>.InstanceType, ksScript\<ksIServerEntity, ksServerEntityScript>.IsAttached, ksScript\<ksIServerEntity, ksServerEntityScript>.Scripts, ksScript\<ksIServerEntity, ksServerEntityScript>.Assets, ksScript\<ksIServerEntity, ksServerEntityScript>.Attached(), ksScript\<ksIServerEntity, ksServerEntityScript>.Initialize(), ksScript\<ksIServerEntity, ksServerEntityScript>.Detached(), ksScript\<ksIServerEntity, ksServerEntityScript>.Clone(), [object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object\)), [object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object-system-object\)), [object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode), [object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype), [object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone), [object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals), [object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)

## Properties

### AngularVelocity <a href="#ks_reactor_server_ksrigidbody2dview_angularvelocity" id="ks_reactor_server_ksrigidbody2dview_angularvelocity"></a>

Angular velocity in degrees.

```csharp
public float AngularVelocity { get; set; }
```

#### Property Value

[float](https://learn.microsoft.com/dotnet/api/system.single)

### CenterOfMass <a href="#ks_reactor_server_ksrigidbody2dview_centerofmass" id="ks_reactor_server_ksrigidbody2dview_centerofmass"></a>

The rigidbody's center of mass in local space.

If [AutoCalculateCenterOfMass](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_AutoCalculateCenterOfMass) is true, this is automatically calculated from the attached colliders.

```csharp
public ksVector2 CenterOfMass { get; set; }
```

#### Property Value

ksVector2

### Constraints <a href="#ks_reactor_server_ksrigidbody2dview_constraints" id="ks_reactor_server_ksrigidbody2dview_constraints"></a>

Controls which degrees of freedom are allowed for the simulation of this rigidbody.

```csharp
public ksRigidBody2DConstraints Constraints { get; set; }
```

#### Property Value

ksRigidBody2DConstraints

### KinematicMovement <a href="#ks_reactor_server_ksrigidbody2dview_kinematicmovement" id="ks_reactor_server_ksrigidbody2dview_kinematicmovement"></a>

Amount of movement that will be applied to a kinematic rigid body entity during the next physics simulation step. After the simulation step this value will be reset to [Zero](/reactor/api-reference/ks.reactor/ks.reactor.ksvector2.md#KS_Reactor_ksVector2_Zero).

```csharp
public ksVector2 KinematicMovement { get; set; }
```

#### Property Value

ksVector2

### KinematicRotation <a href="#ks_reactor_server_ksrigidbody2dview_kinematicrotation" id="ks_reactor_server_ksrigidbody2dview_kinematicrotation"></a>

Amount of rotation in degrees that will be applied to a kinematic rigid body entity during the next physics simulation step. After the simulation step this value will be reset to zero.

```csharp
public float KinematicRotation { get; set; }
```

#### Property Value

[float](https://learn.microsoft.com/dotnet/api/system.single)

### KinematicRotationRadians <a href="#ks_reactor_server_ksrigidbody2dview_kinematicrotationradians" id="ks_reactor_server_ksrigidbody2dview_kinematicrotationradians"></a>

Amount of rotation in radians that will be applied to a kinematic rigid body entity during the next physics simulation step. After the simulation step this value will be reset to zero.

```csharp
public float KinematicRotationRadians { get; set; }
```

#### Property Value

[float](https://learn.microsoft.com/dotnet/api/system.single)

### Velocity <a href="#ks_reactor_server_ksrigidbody2dview_velocity" id="ks_reactor_server_ksrigidbody2dview_velocity"></a>

Velocity.

```csharp
public ksVector2 Velocity { get; set; }
```

#### Property Value

ksVector2

### WorldCenterOfMass <a href="#ks_reactor_server_ksrigidbody2dview_worldcenterofmass" id="ks_reactor_server_ksrigidbody2dview_worldcenterofmass"></a>

The center of mass of the rigidbody in world space.

```csharp
public ksVector2 WorldCenterOfMass { get; set; }
```

#### Property Value

ksVector2

## Methods

### AddForce(ksVector2, ksForceMode) <a href="#ks_reactor_server_ksrigidbody2dview_addforce_ks_reactor_ksvector2_ks_reactor_ksforcemode" id="ks_reactor_server_ksrigidbody2dview_addforce_ks_reactor_ksvector2_ks_reactor_ksforcemode"></a>

Adds a force to the rigidbody.

```csharp
public void AddForce(ksVector2 force, ksForceMode mode = ksForceMode.FORCE)
```

#### Parameters

`force` ksVector2

Force to add.

`mode` ksForceMode

Determines how the force is applied.

### AddForceAtPosition(ksVector2, ksVector2, ksForceMode) <a href="#ks_reactor_server_ksrigidbody2dview_addforceatposition_ks_reactor_ksvector2_ks_reactor_ksvector2_ks" id="ks_reactor_server_ksrigidbody2dview_addforceatposition_ks_reactor_ksvector2_ks_reactor_ksvector2_ks"></a>

Adds a force to the rigidbody at a position in world space.

```csharp
public void AddForceAtPosition(ksVector2 force, ksVector2 position, ksForceMode mode = ksForceMode.FORCE)
```

#### Parameters

`force` ksVector2

Force to add.

`position` ksVector2

Position in world space.

`mode` ksForceMode

Determines how the force is applied.

### AddForceRelative(ksVector2, ksForceMode) <a href="#ks_reactor_server_ksrigidbody2dview_addforcerelative_ks_reactor_ksvector2_ks_reactor_ksforcemode" id="ks_reactor_server_ksrigidbody2dview_addforcerelative_ks_reactor_ksvector2_ks_reactor_ksforcemode"></a>

Adds a force to the rigidbody relative to the entity's rotation.

```csharp
public void AddForceRelative(ksVector2 force, ksForceMode mode = ksForceMode.FORCE)
```

#### Parameters

`force` ksVector2

Force to add.

`mode` ksForceMode

Determines how the force is applied.

### AddTorque(float, ksForceMode) <a href="#ks_reactor_server_ksrigidbody2dview_addtorque_system_single_ks_reactor_ksforcemode" id="ks_reactor_server_ksrigidbody2dview_addtorque_system_single_ks_reactor_ksforcemode"></a>

Adds a torque to the rigidbody.

```csharp
public void AddTorque(float torque, ksForceMode mode = ksForceMode.FORCE)
```

#### Parameters

`torque` [float](https://learn.microsoft.com/dotnet/api/system.single)

Torque to add.

`mode` ksForceMode

Determines how the torque is applied.

### ApplyKinematicMotion() <a href="#ks_reactor_server_ksrigidbody2dview_applykinematicmotion" id="ks_reactor_server_ksrigidbody2dview_applykinematicmotion"></a>

Applies kinematic motion.

```csharp
protected override void ApplyKinematicMotion()
```

### Attached() <a href="#ks_reactor_server_ksrigidbody2dview_attached" id="ks_reactor_server_ksrigidbody2dview_attached"></a>

Initializes the rigid body.

```csharp
public override void Attached()
```

### ClearKinematicMotion() <a href="#ks_reactor_server_ksrigidbody2dview_clearkinematicmotion" id="ks_reactor_server_ksrigidbody2dview_clearkinematicmotion"></a>

Clear the Kinematic movement and rotation values.

```csharp
public void ClearKinematicMotion()
```

### Detached() <a href="#ks_reactor_server_ksrigidbody2dview_detached" id="ks_reactor_server_ksrigidbody2dview_detached"></a>

Performs clean up.

```csharp
public override void Detached()
```
