Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void OnAnimatorIK(int layerIndex)
- {
- if (animator)
- {
- // Left Foot
- RaycastHit leftFootIKHit;
- Ray leftFootIKRay;
- leftFootIKRay = new Ray(animator.GetIKPosition(AvatarIKGoal.LeftFoot) + Vector3.up, Vector3.down);
- // If it hits ground
- if (Physics.Raycast(leftFootIKRay, out leftFootIKHit, distanceToGround + 1.2f, groundLayer))
- {
- // Make sure the Raycast ignores the players collider
- if (leftFootIKHit.transform.gameObject.layer != player)
- {
- Vector3 leftFootPosition = leftFootIKHit.point;
- leftFootPosition.y += distanceToGround;
- animator.SetIKPosition(AvatarIKGoal.LeftFoot, leftFootPosition);
- animator.SetIKRotation(AvatarIKGoal.LeftFoot, Quaternion.FromToRotation(Vector3.up, leftFootIKHit.normal) * animator.GetIKRotation(AvatarIKGoal.LeftFoot));
- }
- }
- // check distance to ground, if close set weight to 1, if not set to 0 so IK does not interfere with animations
- if (Vector3.Distance(animator.GetIKPosition(AvatarIKGoal.LeftFoot), leftFootIKHit.point) < 0.201)
- {
- //Debug.Log("LEFT FOOT - Weight is 1");
- animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, 1f);
- animator.SetIKRotationWeight(AvatarIKGoal.LeftFoot, 1f);
- }
- else
- {
- //Debug.Log("LEFT FOOT - Weight is 0");
- animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, 0f);
- animator.SetIKRotationWeight(AvatarIKGoal.LeftFoot, 0f);
- }
- // Right Foot
- RaycastHit rightFootIKHit;
- Ray rightFootIKRay;
- rightFootIKRay = new Ray(animator.GetIKPosition(AvatarIKGoal.RightFoot) + Vector3.up, Vector3.down);
- // If it hits ground
- if (Physics.Raycast(rightFootIKRay, out rightFootIKHit, distanceToGround + 1.2f, groundLayer))
- {
- // Make sure the Raycast ignores the players collider
- if (rightFootIKHit.transform.gameObject.layer != player)
- {
- Vector3 rightFootPosition = rightFootIKHit.point;
- rightFootPosition.y += distanceToGround;
- animator.SetIKPosition(AvatarIKGoal.RightFoot, rightFootPosition);
- animator.SetIKRotation(AvatarIKGoal.RightFoot, Quaternion.FromToRotation(Vector3.up, rightFootIKHit.normal) * animator.GetIKRotation(AvatarIKGoal.RightFoot));
- }
- }
- // check distance to ground, if close set weight to 1, if not set to 0 so IK does not interfere with animations
- if (Vector3.Distance(animator.GetIKPosition(AvatarIKGoal.RightFoot), rightFootIKHit.point) < 0.201)
- {
- //Debug.Log("RIGHT FOOT - Weight is 1");
- animator.SetIKPositionWeight(AvatarIKGoal.RightFoot, 1f);
- animator.SetIKRotationWeight(AvatarIKGoal.RightFoot, 1f);
- }
- else
- {
- //Debug.Log("RIGHT FOOT - Weight is 0");
- animator.SetIKPositionWeight(AvatarIKGoal.RightFoot, 0f);
- animator.SetIKRotationWeight(AvatarIKGoal.RightFoot, 0f);
- }
- }
- }
Advertisement
Advertisement
Advertisement
RAW Paste Data
Copied
Advertisement