> 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.kscharactercontroller.md).

# Class ksCharacterController

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

Character controller script.

```csharp
public class ksCharacterController : ksCollider, ksScript<ksIServerEntity, ksServerEntityScript>.IInternals, ksICollider, ksICharacterController
```

#### 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) â† [ksCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md) â† [ksCharacterController](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscharactercontroller.md)

#### Implements

ksScript\<ksIServerEntity, ksServerEntityScript>.IInternals, ksICollider, ksICharacterController

#### Inherited Members

[ksCollider.m\_scale](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_m_scale), [ksCollider.m\_position](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_m_position), [ksCollider.m\_rotation](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_m_rotation), [ksCollider.m\_enabled](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_m_enabled), [ksCollider.m\_useEntityCollisionFilter](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_m_useEntityCollisionFilter), [ksCollider.UseEntityCollisionFilter](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_UseEntityCollisionFilter), [ksCollider.IsQueryCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_IsQueryCollider), [ksCollider.IsSimulationCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_IsSimulationCollider), [ksCollider.IsTrigger](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_IsTrigger), [ksCollider.CollisionFilter](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_CollisionFilter), [ksCollider.Bounds](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_Bounds), [ksCollider.IsEnabled](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_IsEnabled), [ksCollider.ContactOffset](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_ContactOffset), [ksCollider.Offset](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_Offset), [ksCollider.ScaleGeometry()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_ScaleGeometry), [ksCollider.Clone()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_Clone), [ksCollider.ConstructClone()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_ConstructClone), [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)

## Constructors

### ksCharacterController(ksIServerRoom, float, float, float, float, float, float, ksVector3) <a href="#ks_reactor_server_kscharactercontroller__ctor_ks_reactor_server_ksiserverroom_system_single_system_s" id="ks_reactor_server_kscharactercontroller__ctor_ks_reactor_server_ksiserverroom_system_single_system_s"></a>

Initializes a new instance of the [ksCharacterController](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscharactercontroller.md) class in the default scene of the specified room.

```csharp
public ksCharacterController(ksIServerRoom room, float slopeLimit = 45, float stepOffset = 0.3, float skinWidth = 0.08, float radius = 0.5, float height = 2, float minMoveDistance = 0.001, ksVector3 offset = default)
```

#### Parameters

`room` [ksIServerRoom](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverroom.md)

The room whose default scene to create the character controller in.

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

Slope limit in degrees. See [SlopeLimit](#KS_Reactor_Server_ksCharacterController_SlopeLimit).

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

Step offset. See [StepOffset](#KS_Reactor_Server_ksCharacterController_StepOffset).

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

Collision skin width. See [SkinWidth](#KS_Reactor_Server_ksCharacterController_SkinWidth).

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

The radius of the character's capsule. See [Radius](#KS_Reactor_Server_ksCharacterController_Radius).

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

The height of the character's capsule. See [Height](#KS_Reactor_Server_ksCharacterController_Height).

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

Minimum move distance. See [MinMoveDistance](#KS_Reactor_Server_ksCharacterController_MinMoveDistance).

`offset` ksVector3

The offset of the character's collider relative to the transform's position. See [Offset](#KS_Reactor_Server_ksCharacterController_Offset).

### ksCharacterController(pxControllerManager, float, float, float, float, float, float, ksVector3) <a href="#ks_reactor_server_kscharactercontroller__ctor_ks_reactor_server_physx_pxcontrollermanager_system_sin" id="ks_reactor_server_kscharactercontroller__ctor_ks_reactor_server_physx_pxcontrollermanager_system_sin"></a>

Initializes a new instance of the [ksCharacterController](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscharactercontroller.md) class in the specified controller manager.

```csharp
public ksCharacterController(pxControllerManager controllerManager, float slopeLimit = 45, float stepOffset = 0.3, float skinWidth = 0.08, float radius = 0.5, float height = 2, float minMoveDistance = 0.001, ksVector3 offset = default)
```

#### Parameters

`controllerManager` [pxControllerManager](/reactor/api-reference/ks.reactor.server.physx/ks.reactor.server.physx.pxcontrollermanager.md)

Controller manager for the scene to create the character controller in.

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

Slope limit in degrees. See [SlopeLimit](#KS_Reactor_Server_ksCharacterController_SlopeLimit).

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

Step offset. See [StepOffset](#KS_Reactor_Server_ksCharacterController_StepOffset).

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

Collision skin width. See [SkinWidth](#KS_Reactor_Server_ksCharacterController_SkinWidth).

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

The radius of the character's capsule. See [Radius](#KS_Reactor_Server_ksCharacterController_Radius).

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

The height of the character's capsule. See [Height](#KS_Reactor_Server_ksCharacterController_Height).

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

Minimum move distance. See [MinMoveDistance](#KS_Reactor_Server_ksCharacterController_MinMoveDistance).

`offset` ksVector3

The offset of the character's collider relative to the transform's position. See [Offset](#KS_Reactor_Server_ksCharacterController_Offset).

## Properties

### Bounds <a href="#ks_reactor_server_kscharactercontroller_bounds" id="ks_reactor_server_kscharactercontroller_bounds"></a>

Get the bounds of a collider at the position of its attached entity or at the origin if the collider is not attached to an entity.

```csharp
public override ksBounds Bounds { get; }
```

#### Property Value

ksBounds

### CollisionFilter <a href="#ks_reactor_server_kscharactercontroller_collisionfilter" id="ks_reactor_server_kscharactercontroller_collisionfilter"></a>

Collision filter.

```csharp
public override ksCollisionFilter CollisionFilter { get; set; }
```

#### Property Value

ksCollisionFilter

### CollisionFlags <a href="#ks_reactor_server_kscharactercontroller_collisionflags" id="ks_reactor_server_kscharactercontroller_collisionflags"></a>

What part of the collider collided with the environment during the last move call.

```csharp
public ksCharacterControllerCollisionFlags CollisionFlags { get; }
```

#### Property Value

ksCharacterControllerCollisionFlags

### ContactOffset <a href="#ks_reactor_server_kscharactercontroller_contactoffset" id="ks_reactor_server_kscharactercontroller_contactoffset"></a>

Shape contact offset.

```csharp
public override float ContactOffset { get; set; }
```

#### Property Value

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

### DetectCollisions <a href="#ks_reactor_server_kscharactercontroller_detectcollisions" id="ks_reactor_server_kscharactercontroller_detectcollisions"></a>

Determines whether other rigidbodies or character controllers collide with this character controller.

```csharp
public bool DetectCollisions { get; set; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### EnableOverlapRecovery <a href="#ks_reactor_server_kscharactercontroller_enableoverlaprecovery" id="ks_reactor_server_kscharactercontroller_enableoverlaprecovery"></a>

Enables or disables overlap recovery. Used to depenetrate character controllers from static objects when an overlap is detected.

```csharp
public bool EnableOverlapRecovery { get; set; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### Height <a href="#ks_reactor_server_kscharactercontroller_height" id="ks_reactor_server_kscharactercontroller_height"></a>

The height of the character's capsule.

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

#### Property Value

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

### IsEnabled <a href="#ks_reactor_server_kscharactercontroller_isenabled" id="ks_reactor_server_kscharactercontroller_isenabled"></a>

Enabled flag. Setting to true to put the character controller into the scene.

```csharp
public override bool IsEnabled { get; set; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### IsGrounded <a href="#ks_reactor_server_kscharactercontroller_isgrounded" id="ks_reactor_server_kscharactercontroller_isgrounded"></a>

Did the bottom of the controller touch something during the last move.

```csharp
public bool IsGrounded { get; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### IsQueryCollider <a href="#ks_reactor_server_kscharactercontroller_isquerycollider" id="ks_reactor_server_kscharactercontroller_isquerycollider"></a>

Scene queries flag.

```csharp
public override bool IsQueryCollider { get; set; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### IsSimulationCollider <a href="#ks_reactor_server_kscharactercontroller_issimulationcollider" id="ks_reactor_server_kscharactercontroller_issimulationcollider"></a>

Simulation flag.

```csharp
public override bool IsSimulationCollider { get; set; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### IsTrigger <a href="#ks_reactor_server_kscharactercontroller_istrigger" id="ks_reactor_server_kscharactercontroller_istrigger"></a>

Trigger flag.

```csharp
public override bool IsTrigger { get; set; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### MinMoveDistance <a href="#ks_reactor_server_kscharactercontroller_minmovedistance" id="ks_reactor_server_kscharactercontroller_minmovedistance"></a>

Minimum move distance of the character controller. If travelled distance is smaller, the character doesn't move. This is used to stop the recursive motion algorithm when remaining distance to travel is small.

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

#### Property Value

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

### Offset <a href="#ks_reactor_server_kscharactercontroller_offset" id="ks_reactor_server_kscharactercontroller_offset"></a>

The offset of the character's collider relative to the transform's position.

```csharp
public override ksVector3 Offset { get; set; }
```

#### Property Value

ksVector3

### PhysXCapsule <a href="#ks_reactor_server_kscharactercontroller_physxcapsule" id="ks_reactor_server_kscharactercontroller_physxcapsule"></a>

Get a PhysX capsule that represents the geometry used by the character controller.

```csharp
public pxCapsule PhysXCapsule { get; }
```

#### Property Value

[pxCapsule](/reactor/api-reference/ks.reactor.server.physx/ks.reactor.server.physx.pxcapsule.md)

### PhysXCharacterController <a href="#ks_reactor_server_kscharactercontroller_physxcharactercontroller" id="ks_reactor_server_kscharactercontroller_physxcharactercontroller"></a>

PhysX capsule character controller.

```csharp
public pxCapsuleController PhysXCharacterController { get; }
```

#### Property Value

[pxCapsuleController](/reactor/api-reference/ks.reactor.server.physx/ks.reactor.server.physx.pxcapsulecontroller.md)

### Radius <a href="#ks_reactor_server_kscharactercontroller_radius" id="ks_reactor_server_kscharactercontroller_radius"></a>

The radius of the character's capsule.

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

#### Property Value

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

### ScaledHeight <a href="#ks_reactor_server_kscharactercontroller_scaledheight" id="ks_reactor_server_kscharactercontroller_scaledheight"></a>

The height of the character's capsule with entity scaling applied

```csharp
public float ScaledHeight { get; }
```

#### Property Value

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

### ScaledRadius <a href="#ks_reactor_server_kscharactercontroller_scaledradius" id="ks_reactor_server_kscharactercontroller_scaledradius"></a>

The radius of the character's capsule with entity scaling applied.

```csharp
public float ScaledRadius { get; }
```

#### Property Value

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

### SkinWidth <a href="#ks_reactor_server_kscharactercontroller_skinwidth" id="ks_reactor_server_kscharactercontroller_skinwidth"></a>

Collision skin width.

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

#### Property Value

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

### SlopeLimit <a href="#ks_reactor_server_kscharactercontroller_slopelimit" id="ks_reactor_server_kscharactercontroller_slopelimit"></a>

Slope limit in degrees.

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

#### Property Value

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

### StepOffset <a href="#ks_reactor_server_kscharactercontroller_stepoffset" id="ks_reactor_server_kscharactercontroller_stepoffset"></a>

Step offset.

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

#### Property Value

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

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

Average velocity of the last move.

```csharp
public ksVector3 Velocity { get; }
```

#### Property Value

ksVector3

## Methods

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

Puts the controller in the default scene. Tracks the controller in the manager. Initializes position.

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

### ConstructClone() <a href="#ks_reactor_server_kscharactercontroller_constructclone" id="ks_reactor_server_kscharactercontroller_constructclone"></a>

Constructs a new instance of this type. Used for cloning.

```csharp
protected override ksCollider ConstructClone()
```

#### Returns

[ksCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md)

Constructed instance

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

Removes the controller from the scene and the manager.

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

### Move(ksVector3) <a href="#ks_reactor_server_kscharactercontroller_move_ks_reactor_ksvector3" id="ks_reactor_server_kscharactercontroller_move_ks_reactor_ksvector3"></a>

Moves the character with a displacement vector. Users are responsible for applying gravity to characters.

```csharp
public ksCharacterControllerCollisionFlags Move(ksVector3 delta)
```

#### Parameters

`delta` ksVector3

The displacement vector to move the character by.

#### Returns

ksCharacterControllerCollisionFlags

The collision flags indicating what the character collided with during the move.

### ScaleGeometry() <a href="#ks_reactor_server_kscharactercontroller_scalegeometry" id="ks_reactor_server_kscharactercontroller_scalegeometry"></a>

Update character controller scale.

```csharp
protected override sealed void ScaleGeometry()
```

### SimpleMove(ksVector3) <a href="#ks_reactor_server_kscharactercontroller_simplemove_ks_reactor_ksvector3" id="ks_reactor_server_kscharactercontroller_simplemove_ks_reactor_ksvector3"></a>

Moves the character with velocity. Gravity is automatically applied. Returns if the character is grounded.

```csharp
public bool SimpleMove(ksVector3 velocity)
```

#### Parameters

`velocity` ksVector3

Velocity to move with.

#### Returns

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

True if the character is grounded.

### OnColliderHit <a href="#ks_reactor_server_kscharactercontroller_oncolliderhit" id="ks_reactor_server_kscharactercontroller_oncolliderhit"></a>

Invoked when this character controller hits a collider.

```csharp
public event ksCharacterControllerEvents.ColliderHitHandler OnColliderHit
```

#### Event Type

ksCharacterControllerEvents.ColliderHitHandler
