Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- for(var i = 0;i<playerArr.length;i++)
- {
- for(var j = 0;j<playerArr[i].bullets.length;j++)
- {
- playerArr[i].bullets[j].traveled += playerArr[i].bullets[j].speed;
- var x0 = playerArr[i].bullets[j].playerX;
- var y0 = playerArr[i].bullets[j].playerY;
- var radians = playerArr[i].bullets[j].attack * Math.PI / 180;
- var dX = playerArr[i].bullets[j].traveled * Math.cos(radians);
- var dY = playerArr[i].bullets[j].traveled * Math.sin(radians);
- var sShotSqr = playerArr[i].bullets[j].traveled * playerArr[i].bullets[j].traveled;
- // you'll need to track the last bullet position, or integrate this code
- // into the bullet update code so you can use both the previous and
- // current 'traveled' values.
- var tMin = playerArr[i].bullets[j].traveled-10 / playerArr[i].bullets[j].traveled;
- for(var k = 0;k<playerArr.length;k++)
- {
- var dXTarget = playerArr[k].x - x0;
- var dYTarget = playerArr[k].y - y0;
- var t = (dXTarget * dX + dYTarget * dY) / sShotSqr;
- // check for the bullet moving away from the player
- if (t < 0)
- continue;
- var radius = 15;
- var deltaTMax = radius / playerArr[i].bullets[j].traveled;
- // check coarsely for the player and bullet not crossing paths this frame
- if (t + deltaTMax < tMin || t - deltaTMax > 1)
- continue;
- var xSpoke = x0 + dX * t;
- var ySpoke = y0 + dY * t;
- var offsetSqr = radius * radius - xSpoke * xSpoke - ySpoke * ySpoke;
- // check for the bullet's path not touching the player
- if (offsetSqr < 0)
- continue;
- var deltaT = Math.sqrt(offsetSqr / sShotSqr);
- // check for the bullet not yet reaching the player or the player
- // moving across the path after the bullet has passed
- if (t + deltaT < tMin || t - deltaT > 1)
- continue;
- console.log("hit");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement