Advertisement
Guest User

Untitled

a guest
May 1st, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. for(var i = 0;i<playerArr.length;i++)
  2.   {
  3.     for(var j = 0;j<playerArr[i].bullets.length;j++)
  4.     {
  5.       playerArr[i].bullets[j].traveled += playerArr[i].bullets[j].speed;
  6.       var x0 = playerArr[i].bullets[j].playerX;
  7.       var y0 = playerArr[i].bullets[j].playerY;
  8.       var radians = playerArr[i].bullets[j].attack * Math.PI / 180;
  9.       var dX = playerArr[i].bullets[j].traveled * Math.cos(radians);
  10.       var dY = playerArr[i].bullets[j].traveled * Math.sin(radians);
  11.       var sShotSqr = playerArr[i].bullets[j].traveled * playerArr[i].bullets[j].traveled;
  12.  
  13.       // you'll need to track the last bullet position, or integrate this code
  14.       // into the bullet update code so you can use both the previous and
  15.       // current 'traveled' values.
  16.  
  17.       var tMin = playerArr[i].bullets[j].traveled-10 / playerArr[i].bullets[j].traveled;
  18.  
  19.       for(var k = 0;k<playerArr.length;k++)
  20.       {
  21.         var dXTarget = playerArr[k].x - x0;
  22.         var dYTarget = playerArr[k].y - y0;
  23.         var t = (dXTarget * dX + dYTarget * dY) / sShotSqr;
  24.         // check for the bullet moving away from the player
  25.         if (t < 0)
  26.           continue;
  27.  
  28.         var radius = 15;
  29.         var deltaTMax = radius / playerArr[i].bullets[j].traveled;
  30.         // check coarsely for the player and bullet not crossing paths this frame
  31.         if (t + deltaTMax < tMin || t - deltaTMax > 1)
  32.           continue;
  33.  
  34.         var xSpoke = x0 + dX * t;
  35.         var ySpoke = y0 + dY * t;
  36.         var offsetSqr = radius * radius - xSpoke * xSpoke - ySpoke * ySpoke;
  37.         // check for the bullet's path not touching the player
  38.         if (offsetSqr < 0)
  39.           continue;
  40.  
  41.         var deltaT = Math.sqrt(offsetSqr / sShotSqr);
  42.         // check for the bullet not yet reaching the player or the player
  43.         // moving across the path after the bullet has passed
  44.         if (t + deltaT < tMin || t - deltaT > 1)
  45.           continue;
  46.         console.log("hit");
  47.       }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement