14 private const float MaxSpeed = 2f;
19 private const float Acceleration = 5f;
24 private const float Friction = 2f;
29 private const float RotationSpeed = 60f;
49 private Vector3 _cameraOffset;
59 private Vector3 _cameraHeightOffset;
65 private float _currentVelocity;
72 _cameraOffset = Camera.main.transform.position - transform.position;
78 var input =
new Vector3(Input.GetAxisRaw(
"Horizontal"), 0f, Input.GetAxisRaw(
"Vertical"));
79 var direction = Camera.main.transform.TransformDirection(input);
81 direction.Normalize();
82 var targetEulerAngles = direction.magnitude > 0
83 ? Quaternion.LookRotation(direction).eulerAngles
84 : transform.rotation.eulerAngles;
85 var eulerAngles = transform.rotation.eulerAngles;
86 eulerAngles.y = Mathf.SmoothDampAngle(eulerAngles.y, targetEulerAngles.y, ref _currentVelocity,
87 Time.deltaTime * RotationSpeed * input.magnitude);
88 transform.rotation = Quaternion.Euler(eulerAngles);
89 _speed += input.magnitude * (Acceleration * MaxSpeed) * Time.deltaTime;
90 _speed -= Friction * MaxSpeed * Time.deltaTime;
91 _speed = Mathf.Clamp(_speed, 0f, MaxSpeed);
93 Animator.SetFloat(
"SpeedFactor", _speed / MaxSpeed);
97 Camera.main.transform.position = transform.position + _cameraHeightOffset + pivotedPosition;
98 Camera.main.transform.LookAt(transform.position + _cameraHeightOffset);
Represents a base class used in TriLib samples.
Vector2 CameraAngle
Current camera pitch and yaw angles.
static AssetViewerBase Instance
Gets the Asset Viewer Singleton instance.
Represents a class used to control an avatar on TriLib samples.
static AvatarController Instance
The Avatar Controller Singleton instance.
CharacterController CharacterController
Avatar character controller.
Animator Animator
Avatar animator.
GameObject InnerAvatar
Game object that wraps the actual avatar.