Advanced View
The Advanced View provides access to a lot of advanced properties that allow you to control your characters. Understanding these properties will help you to get exactly the feel you want for your game.
Properties
Is Enabled – Determines if the Actor Controller processes at all.
Use LateUpdate – Determines if we use Unity’s Update or LateUpdate function for processing. Typically I use LateUpdate to account for other moving objects and platforms.
Invert Rotation Order – In normal ground based movement, yaw has priority when we rotate. In 3D movement like flying and swimming, pitching typically takes priority.
During 3D movement, we want to invert the order that we apply the rotations.
Use Transform – With NPCs, it’s sometimes easier to let AI or nav mesh agents move the character. By enabling this option, characters will ignore movement set using the Move() and MoveRelative() functions. Instead, we’ll let external code move the character using Unity’s standard transform.position property.
Use Transform Rotation – When enabled, external code will be responsible for rotating the character using Unity’s standard transform.rotation property.
Use Transform Skin Width – Alternate skin width used to compensate for nav mesh and step gaps.
Actor Properties
These properties are mostly for external use and have little affect on the Actor Controller. Things like height, width, and mass are helpful to understand things like the character’s center of mass.
Height – Typical height (in units) of the character along the world’s y axis.
Width – Typical radius (in units) of the character along the world’s x and z axis.
Mass – Typical mass of the character. In order to be consistent with Unity physics, mass follows their scale (1 cube unit = ~45 kg = 1 point). So an average male would be 2 (2 cube units = ~70 kg = 2 points).
Gravity & Grounding
These properties define how gravity works and how the character fixes himself to the ground.
Is Gravity Enabled – Determines if we’ll apply gravity to the character.
Is Gravity Relative – Determines if gravity is relative to the character’s tilt. When checked, gravity will follow the character’s ‘down’ direction and not the world’s.
Use Fixed Update – Determines if gravity is applied during FixedUpdate or LateUpdate. Using FixedUpdate provides a consistent physics experience. However, using LateUpdate provides for a smoother experience.
Extrapolate – Determines if we estimate the physics forces in Update() to smooth movement.
Gravity – Gravity to apply to this actor. Use (0, 0, 0) to use Unity’s gravity.
Dampen Factor – When grounded, multiplier to apply to lateral movement due to applied forces.
Skin Width – Distance from the ground surface where the character will be considered ‘grounded’.
Use Grounding Layers – Determine if we will use the grounding layers to test grounding collisions against.
Grounding Layers – Unity layers that we’ll test grounding collisions against.
Grounding Radius – Radius of the ‘feet’ used to help determine grounding. This is used when there are gaps in the ground. This way we don’t fall through small gaps.
Grounding Ray Start Height – Starting distance of the grounding ray from the character’s root.
Grounding Ray Distance – Distance to shoot the grounding ray from the Grounding Ray Start Height. Typically
Force Grounding – Determines if we will force the character down to the ground.
Force Grounding Distance – Distance the character can be from the ground where we’ll actually force them down to the ground. This is important for steep slopes.
Collisions
Properties determine what we’ll collide with and how to test for collisions.
Is Collision Enabled – Determines if we process collisions. This doesn’t effect grounding.
Stop Rotations – Determines stop rotating when a collision occurs due to rotation.
Allow Pushback – Determines if other moving objects that collide with the character can actually move the actor.
Overlap Center – Relative center of the object where overlap is tested from. Not required, but used by some custom drivers.
Overlap Radius – Radius used to determine the overlap of other objects. Not required, but used by some custom drivers.
Collision Layers – Layers that we’ll test collisions against.
Steps
Properties that define how we’ll handle steps. Smooth stepping allows us to hide popping by smoothly moving up and down step heights.
Step Height – Max height that we can simply move onto without stopping. When grounded, all collisions under this height are ignored.
Step Up Speed – Multiplier of lateral speed we’ll use to move up steps. Set to 0 to disable smooth stepping up.
Step Down Speed – Multiplier of lateral speed we’ll use to move down steps. Set to 0 to disable smooth stepping down.
Slopes
Properties that define how we’ll handle ramps and slopes. Including what is traversable.
Max Slope – Max angle which the actor can no longer go up.
Is Sliding Enabled – “Determines if actors will slide while on slopes greater than ‘Min Slope’.
Sliding Min Slope – Angle at which the actor will start to slide.
Sliding Gravity Factor – Multiplier to gravity that helps determine the slide speed.
Tilting
Tilting is used to support wall-walking. It allows the character’s up vector to match the ground surface normal they are on.
Orient to Ground – Determines if we’ll rotate the actor to match the ground he’s on.
Keep Orientation – Determines if keep the last orientation while jumping (ie vertical force).
Min Angle – Minimum angle before the orientation time kicks in. Less than this and the rotation is instant.
Max Distance – “Distance from the ground before falling reverts to the natural ground (Vector3.up).
Time – Time (in seconds) to orient to the new ground normal.
Limits
Locks movement and rotation along specific axes.
Freeze Position – Prevents movement on the specified axis.
Freeze Rotation – Prevents rotation on the specified axis.