# Add behavior logic to your character

## Getting a reference to the actor

```csharp
using UnityEngine;
using Lightbug.CharacterControllerPro.Core; //<-- Required

public class CharacterLogic: Monobehaviour
{
    [SerializeField]
    CharacterActor characterActor = null;
}

```

## Update message

Because the actor is a rigid body that's going to be affected by the physics simulation, all the logic must be located on *FixedUpdate*.

```csharp
using UnityEngine;
using Lightbug.CharacterControllerPro.Core; //<-- Required

public class CharacterLogic: Monobehaviour
{
    [SerializeField]
    CharacterActor characterActor = null;
    
    void FixedUpdate()
    {        
        // Put the logic here ...
    }
}
```

## Execution order

Because the actor runs its own update, it is important for the behavior logic (user-defined) to run before it. In Unity the execution order of scripts can be specified either in the project settings, or as a c# attribute called [*DefaultExecutionOrder*](https://docs.unity3d.com/ScriptReference/DefaultExecutionOrder.html).

By default, the *CharacterActor* class uses an execution order of 10. This means all scripts without the attribute (execution order = 0) will run before *CharacterActor*, which is what we want.

```csharp
//CharacterActorOrder = 10
[DefaultExecutionOrder(ExecutionOrder.CharacterActorOrder)]
public class CharacterActor : MonoBehaviour
{
    ...
}
```
