Files
2026-03-04 10:03:45 +08:00

44 lines
994 B
C#

using UnityEngine;
namespace RootMotion.Demos
{
public class MotionAbsorbCharacter : MonoBehaviour
{
public Animator animator;
public MotionAbsorb motionAbsorb;
public Transform cube;
public float cubeRandomPosition = 0.1f;
public AnimationCurve motionAbsorbWeight;
private Vector3 cubeDefaultPosition;
private AnimatorStateInfo info;
private Rigidbody cubeRigidbody;
private void Start()
{
cubeDefaultPosition = cube.position;
cubeRigidbody = cube.GetComponent<Rigidbody>();
}
private void Update()
{
info = animator.GetCurrentAnimatorStateInfo(0);
motionAbsorb.weight = motionAbsorbWeight.Evaluate(info.normalizedTime - (float)(int)info.normalizedTime);
}
private void SwingStart()
{
cubeRigidbody.MovePosition(cubeDefaultPosition + Random.insideUnitSphere * cubeRandomPosition);
cubeRigidbody.MoveRotation(Quaternion.identity);
cubeRigidbody.velocity = Vector3.zero;
cubeRigidbody.angularVelocity = Vector3.zero;
}
}
}