Guest User

Untitled

a guest
Jun 24th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.45 KB | None | 0 0
  1. /// <summary>
  2. ///
  3. /// </summary>
  4.  
  5. using UnityEngine;
  6. using System;
  7. using System.Collections;
  8.  
  9. [RequireComponent(typeof(Animator))]
  10.  
  11. //Name of class must be name of file as well
  12.  
  13. public class IK : MonoBehaviour {
  14.  
  15. protected Animator avatar;
  16.  
  17. public bool ikActive = false;
  18. public Transform bodyObj = null;
  19. public Transform leftFootObj = null;
  20. public Transform rightFootObj = null;
  21. public Transform leftHandObj = null;
  22. public Transform rightHandObj = null;
  23. public Transform lookAtObj = null;
  24.  
  25. public float leftFootWeightPosition = 1;
  26. public float leftFootWeightRotation = 1;
  27.  
  28. public float rightFootWeightPosition = 1;
  29. public float rightFootWeightRotation = 1;
  30.  
  31. public float leftHandWeightPosition = 1;
  32. public float leftHandWeightRotation = 1;
  33.  
  34. public float rightHandWeightPosition = 1;
  35. public float rightHandWeightRotation = 1;
  36.  
  37. public float lookAtWeight = 1.0f;
  38.  
  39. // Use this for initialization
  40. void Start ()
  41. {
  42. avatar = GetComponent<Animator>();
  43. }
  44.  
  45. void OnGUI()
  46. {
  47.  
  48. GUILayout.Label("Activate IK and move the Effectors around in Scene View");
  49. ikActive = GUILayout.Toggle(ikActive, "Activate IK");
  50. }
  51.  
  52.  
  53. void OnAnimatorIK(int layerIndex)
  54. {
  55. if(avatar)
  56. {
  57. if(ikActive)
  58. {
  59. avatar.SetIKPositionWeight(AvatarIKGoal.LeftFoot,leftFootWeightPosition);
  60. avatar.SetIKRotationWeight(AvatarIKGoal.LeftFoot,leftFootWeightRotation);
  61.  
  62. avatar.SetIKPositionWeight(AvatarIKGoal.RightFoot,rightFootWeightPosition);
  63. avatar.SetIKRotationWeight(AvatarIKGoal.RightFoot,rightFootWeightRotation);
  64.  
  65. avatar.SetIKPositionWeight(AvatarIKGoal.LeftHand,leftHandWeightPosition);
  66. avatar.SetIKRotationWeight(AvatarIKGoal.LeftHand,leftHandWeightRotation);
  67.  
  68. avatar.SetIKPositionWeight(AvatarIKGoal.RightHand,rightHandWeightPosition);
  69. avatar.SetIKRotationWeight(AvatarIKGoal.RightHand,rightHandWeightRotation);
  70.  
  71. avatar.SetLookAtWeight(lookAtWeight,0.3f,0.6f,1.0f,0.5f);
  72.  
  73. if(bodyObj != null)
  74. {
  75. avatar.bodyPosition = bodyObj.position;
  76. avatar.bodyRotation = bodyObj.rotation;
  77. }
  78.  
  79. if(leftFootObj != null)
  80. {
  81. avatar.SetIKPosition(AvatarIKGoal.LeftFoot,leftFootObj.position);
  82. avatar.SetIKRotation(AvatarIKGoal.LeftFoot,leftFootObj.rotation);
  83. }
  84.  
  85. if(rightFootObj != null)
  86. {
  87. avatar.SetIKPosition(AvatarIKGoal.RightFoot,rightFootObj.position);
  88. avatar.SetIKRotation(AvatarIKGoal.RightFoot,rightFootObj.rotation);
  89. }
  90.  
  91. if(leftHandObj != null)
  92. {
  93. avatar.SetIKPosition(AvatarIKGoal.LeftHand,leftHandObj.position);
  94. avatar.SetIKRotation(AvatarIKGoal.LeftHand,leftHandObj.rotation);
  95. }
  96.  
  97. if(rightHandObj != null)
  98. {
  99. avatar.SetIKPosition(AvatarIKGoal.RightHand,rightHandObj.position);
  100. avatar.SetIKRotation(AvatarIKGoal.RightHand,rightHandObj.rotation);
  101. }
  102.  
  103. if(lookAtObj != null)
  104. {
  105. avatar.SetLookAtPosition(lookAtObj.position);
  106. }
  107. }
  108. else
  109. {
  110. avatar.SetIKPositionWeight(AvatarIKGoal.LeftFoot,0);
  111. avatar.SetIKRotationWeight(AvatarIKGoal.LeftFoot,0);
  112.  
  113. avatar.SetIKPositionWeight(AvatarIKGoal.RightFoot,0);
  114. avatar.SetIKRotationWeight(AvatarIKGoal.RightFoot,0);
  115.  
  116. avatar.SetIKPositionWeight(AvatarIKGoal.LeftHand,0);
  117. avatar.SetIKRotationWeight(AvatarIKGoal.LeftHand,0);
  118.  
  119. avatar.SetIKPositionWeight(AvatarIKGoal.RightHand,0);
  120. avatar.SetIKRotationWeight(AvatarIKGoal.RightHand,0);
  121.  
  122. avatar.SetLookAtWeight(0.0f);
  123.  
  124. if(bodyObj != null)
  125. {
  126. bodyObj.position = avatar.bodyPosition;
  127. bodyObj.rotation = avatar.bodyRotation;
  128. }
  129.  
  130. if(leftFootObj != null)
  131. {
  132. leftFootObj.position = avatar.GetIKPosition(AvatarIKGoal.LeftFoot);
  133. leftFootObj.rotation = avatar.GetIKRotation(AvatarIKGoal.LeftFoot);
  134. }
  135.  
  136. if(rightFootObj != null)
  137. {
  138. rightFootObj.position = avatar.GetIKPosition(AvatarIKGoal.RightFoot);
  139. rightFootObj.rotation = avatar.GetIKRotation(AvatarIKGoal.RightFoot);
  140. }
  141.  
  142. if(leftHandObj != null)
  143. {
  144. leftHandObj.position = avatar.GetIKPosition(AvatarIKGoal.LeftHand);
  145. leftHandObj.rotation = avatar.GetIKRotation(AvatarIKGoal.LeftHand);
  146. }
  147.  
  148. if(rightHandObj != null)
  149. {
  150. rightHandObj.position = avatar.GetIKPosition(AvatarIKGoal.RightHand);
  151. rightHandObj.rotation = avatar.GetIKRotation(AvatarIKGoal.RightHand);
  152. }
  153.  
  154.  
  155. if(lookAtObj != null)
  156. {
  157. lookAtObj.position = avatar.bodyPosition + avatar.bodyRotation * new Vector3(0,0.5f,1);
  158. }
  159. }
  160. }
  161. }
  162. }
Add Comment
Please, Sign In to add comment