// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik //
#if UNITY_PHYSICS_3D
using UnityEngine;
namespace Animancer
{
///
/// A component which takes the root motion from an and applies it to a
/// .
///
///
///
/// Documentation:
///
/// Redirecting Root Motion
///
///
/// https://kybernetik.com.au/animancer/api/Animancer/RedirectRootMotionToCharacterController
///
[AddComponentMenu("Animancer/Redirect Root Motion To Character Controller")]
[HelpURL("https://kybernetik.com.au/animancer/api/Animancer/" + nameof(RedirectRootMotionToCharacterController))]
public class RedirectRootMotionToCharacterController : RedirectRootMotion
{
/************************************************************************************************************************/
///
public override Vector3 Position
{
get => Target.transform.position;
set => Target.Move(value - Position);
}
///
public override Quaternion Rotation
{
get => Target.transform.rotation;
set => Target.transform.rotation = value;
}
///
protected override void OnAnimatorMove()
{
if (!ApplyRootMotion)
return;
Target.Move(Animator.deltaPosition);
Target.transform.rotation *= Animator.deltaRotation;
}
/************************************************************************************************************************/
}
}
#endif