Game Development Reference
In-Depth Information
In the Project panel, drill down through Locomotion Setup ➤ Locomotion ➤ Scripts to find the
Locomotion script. It happens to be in C# so the syntax is a little different, but with the UnityScript
version for comparison here you can decipher it pretty easily:
#pragma strict
private var m_Animator : Animator = null;
private var m_SpeedId : int = 0;
private var m_AgularSpeedId : int = 0;
private var m_DirectionId : int = 0;
public var m_SpeedDampTime : float = 0.1f;
public var m_AnguarSpeedDampTime : float = 0.25f;
public var m_DirectionResponseTime : float = 0.2f;
function Locomotion(animator : Animator)
{
m_Animator = animator;
m_SpeedId = Animator.StringToHash("Speed");
m_AgularSpeedId = Animator.StringToHash("AngularSpeed");
m_DirectionId = Animator.StringToHash("Direction");
}
function Do(speed : float, direction : float)
{
var state : AnimatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0);
var inTransition : boolean = m_Animator.IsInTransition(0);
var inIdle : boolean = state.IsName("Locomotion.Idle");
var inTurn : boolean = state.IsName("Locomotion.TurnOnSpot") || state.IsName("Locomotion.
PlantNTurnLeft") || state.IsName("Locomotion.PlantNTurnRight");
var inWalkRun : boolean = state.IsName("Locomotion.WalkRun");
var speedDampTime : float = inIdle ? 0 : m_SpeedDampTime;
var angularSpeedDampTime : float = inWalkRun || inTransition ? m_AnguarSpeedDampTime : 0;
var directionDampTime : float = inTurn || inTransition ? 1000000 : 0;
var angularSpeed : float = direction / m_DirectionResponseTime;
m_Animator.SetFloat(m_SpeedId, speed, speedDampTime, Time.deltaTime);
m_Animator.SetFloat(m_AgularSpeedId, angularSpeed, angularSpeedDampTime, Time.deltaTime);
m_Animator.SetFloat(m_DirectionId, direction, directionDampTime, Time.deltaTime);
}
This code breaks down as follows:
(1) private var m_Animator : Animator = null;
Search WWH ::




Custom Search