コード例 #1
0
    public virtual Vector3 CalculateAngularVelocity()
    {
        if (MotionClip != null && MotionClip.rotateType == EMotionType.MT_Override)
        {
            return(MotionClip.GetAngularVelocity());
        }
        if (RootMotionClip != null && RootMotionClip.rotateType == EMotionType.MT_Override)
        {
            return(RootMotionClip.GetAngularVelocity());
        }
        Vector3 res = Vector3.zero;

        if (MotionClip is object)
        {
            res += MotionClip.GetAngularVelocity();
        }
        if (RootMotionClip is object)
        {
            res += RootMotionClip.GetAngularVelocity();
        }
        if (Controller is object)
        {
            res += Controller.GetInputAngularVelocity();
        }
        return(res);
    }
コード例 #2
0
    public virtual Vector3 CalculateVeloctiy()
    {
        if (MotionClip != null && MotionClip.motionType == EMotionType.MT_Override)
        {
            return(MotionClip.GetVelocity());
        }
        if (RootMotionClip != null && RootMotionClip.motionType == EMotionType.MT_Override)
        {
            return(RootMotionClip.GetVelocity());
        }
        // 计算重力
        if (CharacterController.isGrounded)
        {
            Gravity = Physics.gravity;
        }
        else
        {
            Gravity += Physics.gravity * Time.fixedDeltaTime;
        }
        Vector3 res = Vector3.zero;

        if (MotionClip is object)
        {
            res += MotionClip.GetVelocity();
        }
        if (RootMotionClip is object)
        {
            res += RootMotionClip.GetVelocity();
        }
        if (Controller is object)
        {
            Vector3 inputVelocity = Controller.GetInputVelocity();
            res += inputVelocity;
            if (IsDirectVelocity && inputVelocity.sqrMagnitude >= 0.1f)
            {
                transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(inputVelocity, Vector3.up), Time.fixedDeltaTime * 10);
            }
        }
        return(res);
    }
コード例 #3
0
 private void Awake()
 {
     CharacterController = GetComponent <CharacterController>();
     MotionClip          = new MotionClip(transform);
     RootMotionClip      = new RootMotionClip(GetComponentInChildren <Animator>());
 }