Advertisement
Guest User

Untitled

a guest
Oct 25th, 2014
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.06 KB | None | 0 0
  1.     void Aiming()
  2.     {
  3.         mousePosInScene = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, -startPos.z));
  4.         mousePosInScene.z = startPos.z - 0.171f;
  5.  
  6.         float weaponDotProduct = Vector3.Dot((weaponAnkor.transform.position - weaponCenter.transform.position).normalized, (gameObject.transform.rotation * new Vector3(0, 0, 1)).normalized);
  7.         float mouseDotProduct = Vector3.Dot((mousePosInScene - weaponCenter.transform.position).normalized, (gameObject.transform.rotation * new Vector3(0, 0, 1)).normalized);
  8.  
  9.         Vector3 C = new Vector3();
  10.         Vector3 C2 = new Vector3();
  11.  
  12.         if (weaponDotProduct > maxWeaponAimingAngle)
  13.         {
  14.             C = mousePosInScene - headBone.transform.position;
  15.             C2 = mousePosInScene - weaponCenter.transform.position;
  16.             weaponDotProduct = Vector3.Dot((weaponAnkor.transform.position - weaponCenter.transform.position).normalized, (gameObject.transform.rotation * new Vector3(0, 0, 1)).normalized);
  17.             if (weaponDotProduct < maxWeaponAimingAngle)
  18.             {
  19.                 Vector3 B = (gameObject.transform.rotation * new Vector3(0, 0, 1)).normalized;
  20.                 Vector3 crossAB = Vector3.Cross(mousePosInScene - headBone.transform.position, B);
  21.                 C = Quaternion.AngleAxis(-30, crossAB) * B;
  22.                
  23.                 crossAB = Vector3.Cross(mousePosInScene - weaponCenter.transform.position, B);
  24.                 C2 = Quaternion.AngleAxis(-30, crossAB) * B;
  25.                
  26.             }
  27.         }
  28.         else
  29.         {
  30.             Vector3 B = (gameObject.transform.rotation * new Vector3(0, 0, 1)).normalized;
  31.             Vector3 crossAB = Vector3.Cross(mousePosInScene - headBone.transform.position, B);
  32.             C = Quaternion.AngleAxis(-30, crossAB) * B;
  33.  
  34.             crossAB = Vector3.Cross(mousePosInScene - weaponCenter.transform.position, B);
  35.             C2 = Quaternion.AngleAxis(-30, crossAB) * B;
  36.         }
  37.  
  38.         if (Vector3.Angle(headBone.transform.forward, C) > weaponRotationSpeed * Time.deltaTime)
  39.         {
  40.             Vector3 crossAB = Vector3.Cross(headBone.transform.forward, C);
  41.             Vector3 tempC = Quaternion.AngleAxis(weaponRotationSpeed * Time.deltaTime, crossAB) * headBone.transform.forward;
  42.             headBone.transform.rotation = Quaternion.LookRotation(tempC);
  43.         }
  44.         else
  45.             headBone.transform.rotation = Quaternion.LookRotation(C);
  46.  
  47.         if (Vector3.Angle(weaponAnkor.transform.position - weaponCenter.transform.position, C2) > weaponRotationSpeed * Time.deltaTime)
  48.         {
  49.             Vector3 crossAB = Vector3.Cross(weaponAnkor.transform.position - weaponCenter.transform.position, C2);
  50.             Vector3 tempC = Quaternion.AngleAxis(weaponRotationSpeed * Time.deltaTime, crossAB) * weaponAnkor.transform.position - weaponCenter.transform.position;
  51.             weaponCenter.transform.rotation = Quaternion.LookRotation(tempC);
  52.         }
  53.         else
  54.             weaponCenter.transform.rotation = Quaternion.LookRotation(C);
  55.  
  56.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement