This section covers the inners of the
Character component and which tools are exposed for programmers to use.
To move a character to a certain location, you'll need to access the
IMotion unit, which handles the response to locomotion signals. To know more about Kernel Units, visit the Character Controller page.
There are 3 movement types that a character can perform:
- Move to a position: Which is done using the
- Move towards a direction: Which is done executing the
- Start/Stop following a target: Which is done using the
For example, to force a character to move to a target's transform position, the following snipped should be used:
Location location = new Location(target.position); character.Motion.MoveToLocation(location, 0f, null);
As long as the character has a Skeleton, a ragdoll state can be triggered. To make a character enter the ragdoll state use the
character.Ragdoll.StartRagdoll() method. To recover from a ragdoll state, execute the
Ragdoll and Death
We recommend setting the character as dead before entering the ragdoll state. Otherwise the ragdoll animation might want to perform actions only available to non-Ragdoll characters (such as running, shooting, jumping, ...).
To play an animation Gesture you can access the
Gestures property and trigger the
CrossFade(...) method, which handles creating a new layer (if necessary) on top of Unity's Mecanim and play the desired animation.
To enter or exit an animation State you can access the
Stop(...) methods from the
Note that all animation methods are async. This means that your code can yield until the animation has finished executing. For example, to play a gesture animation and print a console message right after the animation has finished you can use:
Debug.Log("Start playing a new animation gesture") await character.Gestures.CrossFade(myAnimationClip, ...); Debug.Log("The previous animation has finished")
To change a character model, call the
ChangeModel(...) method. Its signature contains 2 parameters:
- A prefab object reference, which should be the FBX model
- A configuration struct of type
This last optional parameter allows to define the new model's footstep sounds, its skeleton's bounding volumes as well as a new animator controller and an offset. For example, to change the player's model without any optional parameters:
GameObject instance = character.ChangeModel(prefab, default);
Accessed from the
Busy property, it allows to query whether a specific limb of the character is being used or not. This allows other systems to determine whether an action can be performed or not.
Busy and Available limbs
For example, if a character has both of its arms set as unavailable, trying to execute an action that involves the hands won't be possible, such as grabbing a ladder.
The follow properties can be queried and inform of the availability state of the limb or group of limbs:
IsArmLeftBusy : boolean IsArmRightBusy : boolean IsLegLeftBusy : boolean IsLegRightBusy : boolean AreArmsBusy : boolean AreLegsBusy : boolean IsBusy : boolean
Additionally, limbs can be marked as busy or make them available using the
MakeLimbXXX() method, where XXX is the limb of the body. For example, to set the Left Leg as busy, call the
All available methods
For more information about all the available methods on the Busy system, check the script under