Advertisement
Guest User

Mouse Aim

a guest
May 9th, 2015
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var target:Vector3;
  2. var range:float = 200;
  3.  
  4. var maxPitch:float = 10;
  5. var minPitch:float = -10;
  6. var YawL:float = 45;
  7. var YawR:float = 45;
  8. var Speed:float = 90;
  9. var rotate:Quaternion;
  10.  
  11. var Paiming:int = 0;
  12. var Yaiming:int = 0;
  13.  
  14. var yaw = true;
  15. var pitch = true;
  16.  
  17. var Player:Transform;
  18. var Accuracy:float = 1;
  19. var MuzzleVel:float = 100;
  20.  
  21. var inRangePitch = true;
  22. var inRangeYaw = true;
  23. var inRange = true;
  24.  
  25. function Start() {
  26.     Player = Info.player;
  27. }
  28.  
  29. function Update () {
  30.     Aim();
  31.     if(inRangePitch && inRangeYaw)
  32.     {
  33.         inRange = true;
  34.     }
  35.     else
  36.     {
  37.         inRange = false;
  38.     }
  39. }
  40.  
  41. function Aim() {
  42.     target = Player.position + Player.rigidbody.velocity*(Vector3.Distance(transform.position, Player.position)/MuzzleVel)*Mathf.Clamp(Random.Range(1-Accuracy, 1+Accuracy), 0.1, Mathf.Infinity);
  43.     var angle = Quaternion.Angle(transform.rotation, Quaternion.LookRotation(target - transform.position, transform.root.up));
  44.     rotate = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(target - transform.position, transform.root.up), (Speed*Time.deltaTime)/angle);
  45.     var relrotate:Quaternion = Quaternion.Inverse(rotate)*transform.rotation;
  46.     var locrotate:Quaternion = Quaternion.Inverse(transform.parent.rotation)*rotate;
  47.    
  48.     if(relrotate.x > 0)
  49.     {Paiming = 1;}
  50.     else if(relrotate.x < 0)
  51.     {Paiming = -1;}
  52.     else
  53.     {Paiming = 0;}
  54.    
  55.     if(relrotate.y > 0)
  56.     {Yaiming = 1;}
  57.     else if(relrotate.y < 0)
  58.     {Yaiming = -1;}
  59.     else
  60.     {Yaiming = 0;}
  61.    
  62.     if(pitch)
  63.     {
  64.         if(Paiming == 1 && transform.localRotation.x > -maxPitch*Mathf.Deg2Rad/2)
  65.         {
  66.             transform.localRotation.x = locrotate.x;
  67.             inRangePitch = true;
  68.         }
  69.         else if(Paiming == -1 && transform.localRotation.x < -minPitch*Mathf.Deg2Rad/2)
  70.         {
  71.             transform.localRotation.x = locrotate.x;
  72.             inRangePitch = true;
  73.         }
  74.         else if(Paiming == 0 && minPitch != 0 && maxPitch != 0)
  75.         {
  76.             transform.localRotation.x = locrotate.x;
  77.             inRangePitch = true;
  78.         }
  79.         else
  80.         {
  81.             inRangePitch = false;
  82.         }
  83.     }
  84.     if(yaw && YawL >= 360 && Yaiming == 1|| yaw && YawR >= 360 && Yaiming == -1)
  85.     {transform.localRotation.y = locrotate.y;}
  86.     else if(yaw)
  87.     {
  88.         if(Yaiming == 1 && transform.localRotation.y > -YawL*Mathf.Deg2Rad/2)
  89.         {
  90.             transform.localRotation.y = locrotate.y;
  91.             inRangeYaw = true;
  92.         }
  93.         else if(Yaiming == -1 && transform.localRotation.y < YawR*Mathf.Deg2Rad/2)
  94.         {
  95.             transform.localRotation.y = locrotate.y;
  96.             inRangeYaw = true;
  97.         }
  98.         else if(Yaiming == 0 && YawR != 0 && YawL != 0)
  99.         {
  100.             transform.localRotation.y = locrotate.y;
  101.             inRangeYaw = true;
  102.         }
  103.         else
  104.         {
  105.             inRangeYaw = false;
  106.         }
  107.        
  108.     }
  109.    
  110.     transform.localRotation.z = 0;
  111. }
  112.  
  113. //Thanks to BahamutoD for the code I based this off of!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement