Advertisement
Guest User

Untitled

a guest
Sep 19th, 2021
56
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     private void OnAnimatorIK(int layerIndex)
  2.     {
  3.         if (animator)
  4.         {
  5.             // Left Foot
  6.             RaycastHit leftFootIKHit;
  7.             Ray leftFootIKRay;            
  8.             leftFootIKRay = new Ray(animator.GetIKPosition(AvatarIKGoal.LeftFoot) + Vector3.up, Vector3.down);        
  9.  
  10.             // If it hits ground
  11.             if (Physics.Raycast(leftFootIKRay, out leftFootIKHit, distanceToGround + 1.2f, groundLayer))
  12.             {                
  13.                 // Make sure the Raycast ignores the players collider
  14.                 if (leftFootIKHit.transform.gameObject.layer != player)
  15.                 {
  16.                     Vector3 leftFootPosition = leftFootIKHit.point;
  17.                     leftFootPosition.y += distanceToGround;
  18.                     animator.SetIKPosition(AvatarIKGoal.LeftFoot, leftFootPosition);                                      
  19.  
  20.                     animator.SetIKRotation(AvatarIKGoal.LeftFoot, Quaternion.FromToRotation(Vector3.up, leftFootIKHit.normal) * animator.GetIKRotation(AvatarIKGoal.LeftFoot));
  21.                 }
  22.             }
  23.  
  24.             // check distance to ground, if close set weight to 1, if not set to 0 so IK does not interfere with animations
  25.             if (Vector3.Distance(animator.GetIKPosition(AvatarIKGoal.LeftFoot), leftFootIKHit.point) < 0.201)
  26.             {
  27.                 //Debug.Log("LEFT FOOT - Weight is 1");
  28.                 animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, 1f);
  29.                 animator.SetIKRotationWeight(AvatarIKGoal.LeftFoot, 1f);
  30.             }
  31.             else
  32.             {
  33.                 //Debug.Log("LEFT FOOT - Weight is 0");
  34.                 animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, 0f);
  35.                 animator.SetIKRotationWeight(AvatarIKGoal.LeftFoot, 0f);
  36.             }
  37.  
  38.  
  39.             // Right Foot
  40.             RaycastHit rightFootIKHit;            
  41.             Ray rightFootIKRay;            
  42.             rightFootIKRay = new Ray(animator.GetIKPosition(AvatarIKGoal.RightFoot) + Vector3.up, Vector3.down);
  43.  
  44.             // If it hits ground
  45.             if (Physics.Raycast(rightFootIKRay, out rightFootIKHit, distanceToGround + 1.2f, groundLayer))
  46.             {
  47.                 // Make sure the Raycast ignores the players collider
  48.                 if (rightFootIKHit.transform.gameObject.layer != player)
  49.                 {
  50.                     Vector3 rightFootPosition = rightFootIKHit.point;
  51.                     rightFootPosition.y += distanceToGround;
  52.                     animator.SetIKPosition(AvatarIKGoal.RightFoot, rightFootPosition);                                      
  53.  
  54.                     animator.SetIKRotation(AvatarIKGoal.RightFoot, Quaternion.FromToRotation(Vector3.up, rightFootIKHit.normal) * animator.GetIKRotation(AvatarIKGoal.RightFoot));
  55.                 }
  56.             }
  57.  
  58.             // check distance to ground, if close set weight to 1, if not set to 0 so IK does not interfere with animations
  59.             if (Vector3.Distance(animator.GetIKPosition(AvatarIKGoal.RightFoot), rightFootIKHit.point) < 0.201)
  60.             {
  61.                 //Debug.Log("RIGHT FOOT - Weight is 1");
  62.                 animator.SetIKPositionWeight(AvatarIKGoal.RightFoot, 1f);
  63.                 animator.SetIKRotationWeight(AvatarIKGoal.RightFoot, 1f);
  64.             }
  65.             else
  66.             {
  67.                 //Debug.Log("RIGHT FOOT - Weight is 0");
  68.                 animator.SetIKPositionWeight(AvatarIKGoal.RightFoot, 0f);
  69.                 animator.SetIKRotationWeight(AvatarIKGoal.RightFoot, 0f);
  70.             }
  71.         }
  72.     }
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement